Sur clienthost
j'ai un pub: priv keypair stocké sous ~/.ssh/foo
et ~/.ssh/foo.pub
, respectivement. Sur remotehost
j'ai la pubkey correctement existante dans ~/.ssh/authorized_keys
telle que je peux me connecter en utilisant -i ~/.ssh/foo
.
La connexion est (bien sûr) ne dépend pas de l'existence de clienthost:~/.ssh/foo.pub
: Si je renomme ~/.ssh/foo.pub
à ~/.ssh/bar.pub
rien ne change.
Mais si je modifie un caractère clienthost:~/.ssh/foo.pub
afin qu'il ressemble toujours à une clé publique valide, mais ne correspond plus à la clé privée, je ne peux pas me connecter. Pourquoi pas?
Pourquoi / comment SSH s’intéresse-t-il si le complément de clé publique à la clé privée est intact - et pourquoi ${privkey}.pub
le chemin de recherche?
Key_Load_Public: Invalid Format
mais ne m’empêchait pas de me connecter à l’hôte distant.OpenSSH_6.9p1, LibreSSL 2.1.8
sous OS X 10.11.6.Réponses:
Ce comportement peut être déroutant, mais cela prend tout son sens. Prenons le cas d'utilisation le plus courant, lorsque la clé privée est cryptée et non stockée dans le fichier
ssh-agent
.Dans ce cas d'utilisation, le client lit les deux clés (publiques et privées stockées dans des fichiers séparés), mais n'a pas besoin de vous demander la phrase secrète et ne décrypte pas la partie privée s'il ne sait pas que la clé est acceptée par le serveur.
Si vous modifiez la clé publique en un autre élément non accepté par le serveur, la deuxième étape de l'authentification n'est pas effectuée. En faisant cela, vous rompez la "paire" qui est nécessaire pour le faire fonctionner correctement.
la source