Réponses:
Lorsque l' agent ssh est activé en avant sur le client ( ForwardAgent yes
sur ~/.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_SOCK
doit 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-add
ce 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-add
chaque 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-agent
configuré 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_SOCK
est 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_SOCK
sera alors défini et "contient" votre clé ssh local
sur tous les hôtes.
Supposons maintenant que le transfert d'agent soit désactivé hostB
mais activé hostC
. SSH_AUTH_SOCK
sera activé hostD
mais 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, hostD
vous 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_SOCK
plus et vous assurer qu'il ssh_add
n'a pas de sortie.
ssh-find-agent
script 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.