Comment savoir si une connexion SSH a été établie avec ou sans transfert d'agent?
J'essaie de faire ce qui suit:
ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something
et comparer la sortie, mais je ne vois que des différences subtiles.
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.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 distantAllowAgentForwarding yes
, lors de la connexion au serveur distant la variable d'environnementSSH_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:
la source
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é sshlocal
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 dehostC
àhostD
. La chaîne est cassée.Maintenant, pour vérifier si la clé est disponible,
hostD
vous pouvez simplement appelerssh-add
. Il sortira avec le code 1 dans tous les cas, mais si la clé n'est pas disponible, il affichera ceci surstderr
:Vous pouvez donc vérifier le
SSH_AUTH_SOCK
plus et vous assurer qu'ilssh_add
n'a pas de sortie.la source