Réponses:
Lorsque l' agent ssh est activé en avant sur le client ( ForwardAgent yessur ~/.ssh/config) et est également activé sur le serveur distant AllowAgentForwarding yes, lors de la connexion au serveur distant la variable d'environnement SSH_AUTH_SOCKdoit exister. Ensuite, si vous vous connectez à un autre serveur (votre clé publique doit résider sur ce troisième serveur), aucun mot de passe ne devrait vous être demandé.
Clarifier:
home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$
ssh-addce qui a fait l'affaire pour moi. Je travaillais depuis des mois sans le savoir. Ensuite, j'ai changé de bureau d'Unity vers LXDE et le transfert de clé d'agent a cessé de fonctionner.
ssh-addchaque fois que vous ouvrez une nouvelle fenêtre de console. J'ai donc ajouté cette ligne de commande à la fin de ~/.bash_profile, et maintenant le transfert de l'agent d'authentification fonctionne à chaque fois de manière transparente!
ssh-agentconfiguré correctement. Voir mah.everybody.org/docs/ssh
"${SSH_AUTH_SOCK}"est une socket, vous pouvez le tester avecif [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fi
La vérification de l'environnement SSH_AUTH_SOCKest bonne pour les connexions ssh directes.
Si vous utilisez des proxys ( proxy_command), vous pourriez avoir une connexion qui ressemble à:
local-> hostA-> hostB-> hostC->hostD
Si le transfert d'agent est actif sur tous ces hôtes, il SSH_AUTH_SOCKsera alors défini et "contient" votre clé ssh localsur tous les hôtes.
Supposons maintenant que le transfert d'agent soit désactivé hostBmais activé hostC. SSH_AUTH_SOCKsera activé hostDmais il sera en fait "vide". Bien sûr, l'agent est transféré mais uniquement de hostCà hostD. La chaîne est cassée.
Maintenant, pour vérifier si la clé est disponible, hostDvous pouvez simplement appeler ssh-add. Il sortira avec le code 1 dans tous les cas, mais si la clé n'est pas disponible, il affichera ceci sur stderr:
Impossible d'ouvrir une connexion avec votre agent d'authentification.
Vous pouvez donc vérifier le SSH_AUTH_SOCKplus et vous assurer qu'il ssh_addn'a pas de sortie.
ssh-find-agentscript pour trouver et utiliser les agents ssh existants, très pratique! Le dépôt a quelques exemples dans le fichier README. Vous pourriez être en mesure de détecter si ssh-agent est activé comme ça, ainsi que d'inspecter les fichiers de configuration SSH, plutôt que de regarder la sortie SSH.