Connexion par clé impossible en SSH : clé publique et clé privée ne correspondent pas

Quand vous vous connectez en SSH par clé, votre client envoie la clé publique au serveur pour que celui-ci puisse crypter vos messages et que vous puissiez les décrypter avec votre clé privée.

Si, dans votre répertoire ~/.ssh, vous avez votre clé privée et publique, tout va bien, c'est le comportement normal. Le client ssh enverra votre clé publique.

Si vous avez juste votre clé privée, le client ssh calculera à chaque connexion la clé publique à partir de la clé privée.

Si en revanche vous avez votre clé privée (ex: id_rsa) et une clé publique (ex: id_rsa.pub) qui ne correspond pas (si vous avez bidouillé ce répertoire à la main), il y a un problème. Le client SSH ne va pas vérifier la concordance entre les deux. Il va donc envoyer la clé publique, même si ce n'est pas elle que vous souhaitez utiliser ! Du coup, le serveur ne va pas l'approuver car il ne la connait pas !

Pire que ça, si le serveur est configuré pour approuver aussi cette clé, il va chiffrer sa réponse pour le client avec cette clé. Le client (vous) va vouloir décrypter ce message avec la clé privée, mais puisque celle-ci ne correspond pas, il ne va pas comprendre le message reçu et vous enverra paître.

En résumé, faite attention à la clé publique, elle est automatiquement envoyée plutôt que recalculée systématiquement à partir de la privée !

Damien Gustave

Read more posts by this author.