Agent SSH et authentification par mot de passe
Lorsqu'on a un agent SSH chargé et que l'on cherche à se connecter à une machine sur laquelle on n'a pas de clef SSH, on obtient lamentablement :
[host_a]$ ssh luser@host_b Received disconnect from 192.0.2.18: 2: Too many authentication failures for luser
Première solution :
[host_a]$ unset SSH_AUTH_SOCK [host_a]$ ssh luser@host_b luser@host_b's password: ...
En effet, ssh(1)
a conscience qu'un agent est chargé et l'interroge si la variable d'environnement SSH_AUTH_SOCK
existe et pointe sur une socket Unix ouverte par ssh-agent(1)
(ici sur host_a
).
Seconde solution :
[host_a]$ ssh -o "PreferredAuthentications password" luser@host_b luser@host_b's password: ...
Cette dernière solution permet, si on fait du « renvoi d'agent » (option ForwardAgent yes
dans $HOME/.ssh/config
), d'utiliser une clef sur la machine host_b
, quand bien même luser
s'est authentifié par mot de passe sur host_b
. Lors de la connexion, sshd(8)
sur host_b
lancera pour luser
un autre agent et :
[host_b]$ ssh-add -l 4096 37:59:ff:99:c0:24:9a:ee:cf:24:dd:aa:7c:f6:cc:5c /Users/bofh/.ssh/foo (RSA) 4096 25:ff:d1:9c:87:cc:33:8a:bb:78:6d:60:aa:64:08:ee /var/users/bofh/.ssh/bar (RSA)
Ici, luser
sur host_b
peut utiliser deux clefs SSH, manifestement chargées depuis des machines différentes (par « renvoi d'agent » donc).