Risposte:
Quando forward dell'agente ssh è abilitato sul client ( ForwardAgent yesattivo ~/.ssh/config) ed è abilitato anche sul server remoto AllowAgentForwarding yes, quando si accede al server remoto SSH_AUTH_SOCKdovrebbe esistere la variabile di ambiente . Quindi se accedi a un altro server (la tua chiave pubblica deve risiedere su questo terzo server) non dovresti ricevere alcuna password.
Chiarire:
home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$
ssh-addè quello che ha fatto il trucco per me. Ho lavorato per mesi senza saperlo. Quindi ho cambiato desktop da Unity a LXDE e l'inoltro della chiave dell'agente ha smesso di funzionare.
ssh-addogni volta che apri una nuova finestra della console. Così ho aggiunto quella riga di comando alla fine di ~/.bash_profile, e ora l'inoltro dell'agente di autenticazione funziona sempre in modo trasparente!
ssh-agentimpostato correttamente. Vedi mah.everybody.org/docs/ssh
"${SSH_AUTH_SOCK}"è un socket, puoi provarlo conif [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fi
Controllare l'ambiente per SSH_AUTH_SOCKè buono per le connessioni dirette ssh.
Se usi i proxy ( proxy_command) potresti avere una connczione simile a:
local-> hostA-> hostB-> hostC->hostD
Se l'inoltro dell'agente è attivo su tutti quegli host, SSH_AUTH_SOCKverrà impostato e "contiene" la tua chiave ssh da localtutti gli host.
Supponiamo ora che l'inoltro dell'agente sia disabilitato hostBma attivato hostC. SSH_AUTH_SOCKverrà impostato hostDma sarà effettivamente "vuoto". Naturalmente l'agente viene inoltrato ma solo da hostCa hostD. La catena è rotta.
Ora per verificare se effettivamente il tasto è disponibile su hostDpuoi semplicemente chiamare ssh-add. In ogni caso uscirà con il codice 1, ma se la chiave non è disponibile lo mostrerà su stderr:
Impossibile aprire una connessione al tuo agente di autenticazione.
Quindi puoi controllare il SSH_AUTH_SOCKplus assicurandoti che ssh_addnon ci sia output.
ssh-find-agentscript per trovare e usare gli agenti ssh esistenti, molto utile! Il repository ha alcuni esempi nel README. Potresti essere in grado di rilevare se ssh-agent è abilitato in questo modo, insieme all'ispezione dei file di configurazione SSH, piuttosto che guardare l'output SSH.