SSH aracı iletmeyi algılama


19

Temsilci yönlendirmeli veya yönlendiricisiz bir SSH bağlantısının kurulup kurulmadığını nasıl öğrenebilirim?

Aşağıdakileri yapmaya çalışıyorum:

ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something

ve çıktıyı karşılaştırın, ama sadece ince farklılıkları görebiliyorum.


1
Referans için bu güzel makaleye göz atın : blog.joncairns.com/2013/12/understanding-ssh-agent-and-ssh-add . ssh-find-agentMevcut ssh aracılarını bulmak ve kullanmak için bir komut dosyasıyla güzel bir GitHub repo'yu işaret ediyor , çok kullanışlı! Reponun README'de bazı örnekleri var. SSH çıkışına bakmak yerine, ssh-agent'ın bu şekilde etkinleştirilip etkinleştirilmediğini tespit edebilirsiniz.
trusktr

Yanıtlar:


21

İstemcide ssh agent forward etkinleştirildiğinde ( ForwardAgent yesaçık ~/.ssh/config) ve uzak sunucuda da etkinleştirildiğinde, uzak sunucuya AllowAgentForwarding yesgiriş yapılırken ortam değişkeni SSH_AUTH_SOCKolmalıdır. Daha sonra başka bir sunucuda oturum açarsanız (genel anahtarınız bu üçüncü sunucuda bulunmalıdır) herhangi bir parola sormamanız gerekir.

Netleştirmek için:

home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh  hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$

1
ssh-addBenim için hile yaptı şeydir. Bunu bilmeden aylarca çalışıyordum. Sonra Unity'den LXDE masaüstüne geçtim ve ajan anahtar iletimi çalışmayı durdurdu.
Mark Hudson

@MarkHudson Herhangi bir nedenle LXDE çalıştırırken ssh-add, yeni bir konsol penceresi her açışınızda çalıştırmanız gerekir . Bu komut satırını sonuna ekledim ~/.bash_profileve şimdi kimlik doğrulama aracı iletimi her seferinde şeffaf bir şekilde çalışıyor!
Paul Bernal

@PaulBernal Bunu gerçekten yapmak zorunda değilsiniz, sanırım ssh-agentdoğru bir şekilde ayarlamadıysanız. Bkz. Mah.everybody.org/docs/ssh
Michael

1
m2c: içindeki dosya "${SSH_AUTH_SOCK}"bir soket, test edebilirsinizif [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fi
Boop

4

Ortamın kontrol edilmesi SSH_AUTH_SOCKdoğrudan ssh bağlantıları için iyidir.

proxy_commandProxies ( ) kullanıyorsanız, aşağıdaki gibi bir bağlantınız olabilir:

local-> hostA-> hostB-> hostC->hostD

Tüm bu ana bilgisayarlarda aracı iletme etkinse, SSH_AUTH_SOCKssh anahtarınızı localtüm ana bilgisayarlardan "içerir" .

Şimdi aracı yönlendirmenin devre dışı olduğunu hostBancak açık olduğunu varsayalım hostC. SSH_AUTH_SOCKayarlanacaktır hostDancak aslında "boş" olacaktır. Tabii ajan ama sadece gelen iletilir hostCiçin hostD. Zincir kırık.

Şimdi anahtarın gerçekten kullanılabilir olup olmadığını kontrol etmek hostDiçin sadece arayabilirsiniz ssh-add. Her durumda kod 1 ile çıkacak, ancak anahtar kullanılamıyorsa bunu şu şekilde gösterecektir stderr:

Kimlik doğrulama aracınızla bağlantı açılamadı.

Böylece SSH_AUTH_SOCKartı ssh_addolup olmadığını kontrol edebilirsiniz çıktı yok.

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.