Lorsque l’on réinstalle un PC, il est impossible de se connecter via SSH sur celui ci. Ce problème est du à la signature de la machine distante qui a été enregistrée dans le fichier $HOME/.ssh/known_hosts de la machine source.
Pour corriger cette situation, la solution la plus simple est de supprimer le fichier known_hosts comme expliqué dans cet article, il sera re-créé à la première utilisation de SSH. Seulement, cette correction a pour effet de devoir valider à nouveau tous les accès sur les différentes machine.

Pour éviter de devoir valider tous les accès, il faut éditer le fichier known_hosts et corriger son contenu.

Cette correction a été testé sur un poste fonctionnant avec Ubuntu 9.10 Karmic Kaola.
La correction s’applique également pour d’autres distributions GNU/Linux puisque le fonctionnement de ssh est identique sur toutes les distributions.

Lors d’une connexion sur une VM  ayant l’adresse 192.168.0.13, j’obtiens le message d’erreur suivant :

    yvon@nanda:~$ ssh -XC yvon@192.168.0.13
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    ef:ae:59:a0:a5:dc:9b:78:65:a7:e1:ae:7c:42:e2:68.
    Please contact your system administrator.
    Add correct host key in /home/yvon/.ssh/known_hosts to get rid of this message.
    Offending key in /home/yvon/.ssh/known_hosts:8
    RSA host key for 192.168.0.13 has changed and you have requested strict checking.
    Host key verification failed.

Dans ce message, il y a une ligne qui donne la référence du poste dans le fichier known_hosts :

    Offending key in /home/yvon/.ssh/known_hosts:8

Dans ce message, c’est le poste N° 8 du fichier known_hosts qui a changé de signature et qui est injoignable. Pour corriger cette erreur, il faut éditer le fichier et supprimer la ligne 8.
Pour ceux qui utilise vi, il faut donc utiliser les commandes :

  • cd \$HOME/.ssh pour se placer dans le dossier de configuration de ssh de l’utilisateur
  • vi known_hosts pour ouvrir le fichier en édition
  • :8 pour se placer sur la 8ieme ligne
  • dd pour supprimer la ligne
  • :wq pour sauvegarder et fermer le fichier

Il est également possible de faire cette correction avec une seule ligne de commande, en utilisant l’éditeur sed :

    sed -i 8d $HOME/.ssh/known_hosts