Neden ssh aracısının çıktısını değerlendiriyorsunuz?


67

Koşmak ssh-agentiçin kullanmak zorundayım

eval $(ssh-agent)

Neden evalçıktı almak zorundayım ssh-agent?

Neden sadece çalışabilmem için tasarlanmadı?


Not: Geri tepmeler (`) kullanımdan kaldırıldıkları için kaldırıldı. Sen olabilir mesela burada bu konuda daha fazla okumak .


Eval kullanmak zorunda olduğunu kim söyledi? Bunu dikte eden nedir? Biraz daha fazla bağlam yardımcı olacaktır.
0xSheepdog


9
@ 0xSheepdog, manbaşlangıç ​​için ...
jasonwryan

Kullanım durumları man sayfasında belgelenmiş gibi görünüyor. Gelince "neden belli bir şekilde tasarlanmış" ... omuz silkme .
0xSheepdog

5
Tekrarlayan, bu ssh-agent"bu şekilde tasarlanan" değil, unix / linux, çünkü ssh-agentkabuğun bir alt işleminde çalışır. Alt işlemler üst işlemleri değiştiremez. Fakat bir fonksiyon şunları yapabilir: çünkü mevcut süreçte çalışır. Yani bir fonksiyon yazabiliriz: do_set_ssh_agent() { eval ssh-agent ; }ve bu basitçe olarak çalıştırmak mümkündür: $ do_set_ssh_agent. Ancak “programlar” linux / unix'te (genellikle) “fonksiyon” olarak kurulmaz; bunun yerine, programlar, belirtildiği gibi bir alt süreçte çalışan dosyalar olarak yüklenir. (Kaynak komut dosyaları bir istisnadır, ancak ssh-agent ikilidir.)
michael

Yanıtlar:


79

ssh-agent Bağlanmak zorunda olduğunuz ortam değişkenlerini çıkarır:

shadur@proteus:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-492P67qzMeGA/agent.7948; export SSH_AUTH_SOCK;
SSH_AGENT_PID=7949; export SSH_AGENT_PID;
echo Agent pid 7949;
shadur@proteus:~$ 

Arayarak evalbu değişkenleri derhal ortamınıza yükleyebilirsiniz.

Neden ssh-agentkendisi yapamıyorsun ... Kelime seçimine dikkat edin. "Yapmaz" değil, " yapamaz ". Unix'te, bir işlem yalnızca kendi ortam değişkenlerini değiştirebilir ve bunları çocuklara aktarabilir. O olamaz sistem buna izin vermez çünkü üst süreci çevreyi değiştirmek. Bu oldukça basit bir güvenlik tasarımı.

Etrafa alabilir evalkullanarak ssh-agent utilitynerede utilitybaşka şey ayarlamak SSH ortam değişkenleri olması gerekir ne olursa olsun giriş kabuğu, pencere yöneticiniz veya olduğunu. Bu, kılavuzda da belirtilmiştir.


Teşekkürler, bu açıkça neler olduğunu açıklıyor ve ben bunu anlıyorum, ama neden tasarlanmaktan ziyade bu şekilde tasarlanmış, otomatik olarak değişkenleri çevreye ekliyor? Herhangi bir esneklik ekler mi ???
jx12345

4
@ jx12345 Oturum açma kabuğunuzun nerede olduğunu, pencere yöneticinizi veya SSH ortam değişkenlerini ayarlamak için başka ne gerekiyorsa evalkullanarak bu sorunu çözebilirsiniz . Bu, kılavuzda da belirtilmiştir. Hiçbir dış yardımcı program arama ortamındaki değişkenleri hiçbir zaman ayarlayamaz. ssh-agent utilityutility
Kusalananda

@kusalananda Doğru; Bunu bir düzenleme olarak eklemekten çekinmeyin. Yatağa gidiyorum ya da kendim yaparım.
Shadur

5
@ jx12345 Çünkü kendi ortamına değişkenler ekleyebilir ancak kabuğunuzun ortamına değişkenler ekleyemez, çünkü sizin kabuğunuz değildir.
user253751

3
@ jx12345 Açıklığa kavuşturmak için: Ana sürecime env değişkenlerini ekleyebilir veya değiştirebilirsem, ebeveynin ebeveynini ve benzerlerini PID 1'e kadar etkileyebilirim. Buna "ayrıcalık yükselmesi" denir ve bu bir güvenlikten gerçekten kötü bir şey bakış açısı.
Shadur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.