Si vous essayez de vous connecter à une machine Linux via SSH et vous avez devant vous l’erreur WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
, cela veut dire SSH essaie de vous protéger contre des attaques comme « attaque de l’homme du milieu ( man-in-the-middle attack ).
Dans cette article nous allons voir pourquoi ce message d’erreur s’affiche et quelles sont les étapes à suivre pour remédier à cette erreur.
Qu’est ce que l’erreur REMOTE HOST IDENTIFICATION HAS CHANGED!
SSH vous permet de sécuriser la connexion aux machines en utilisant un réseau non sécurisé comme internet.
SSH utilise des clés permettent notamment de fournir une empreinte digitale (Fingerprint) permanente à chaque serveurs auquel vous vous connectez.
Voici un exemple de l’empreinte digitale lors d’une connexion à une machine Linux via SSH :
[root@Local ~]# ssh 192.168.139.189
The authenticity of host '192.168.139.189 (192.168.139.189)' can't be established.
ED25519 key fingerprint is SHA256:Dyffx2i9mcc3GFF9D524hJ/z7WdrWwGB8KNBHpChVDM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Ici ssh vous demande de confirmer si la machine auquelle vous essayer de vous connecter et bien là votre en vous demandant de confimer que la clé affiché et bien celle de la machine distant.
Comment peut-on vérifier qu’il s’agit bien la clé de la machine distant ?
C’est très simple. Il suffit d’éxecuter la commande suivante sur la machine distante :
[root@remoteLinux]# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Dyffx2i9mcc3GFF9D524hJ/z7WdrWwGB8KNBHpChVDM no comment (ED25519)
Comme vous pouvez le constater, les deux clés sont bien identique, ce qui veut dire que nous pouvons confirmer que c’est bien notre machine :
[root@Local ~]# ssh 192.168.139.189
The authenticity of host '192.168.139.189 (192.168.139.189)' can't be established.
ED25519 key fingerprint is SHA256:Dyffx2i9mcc3GFF9D524hJ/z7WdrWwGB8KNBHpChVDM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.139.189' (ED25519) to the list of known hosts.
root@192.168.139.189's password:
Last login: Wed Nov 6 08:48:41 2024 from 192.168.139.1
Ensuite, Après avoir accepté l’empreinte digitale, SSH l’enregistre dans le fichier ~/.ssh/known_hosts avec l’adresse IP (ou le nom d’hôte) de la machine distante :
[root@Local ~]# cat .ssh/known_hosts
192.168.139.189 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBnJJhjSqW6hRnqjxPxsaw1XK86nJuPhurppVsKY4qcw
Vous vous dites certainement que ce n’est pas l’empreinte digitale que nous avons eu tout à l’heure. rassurez-vous, elle s’agit bien de la même clée, sauf qu’elle est dans sa forme original.
Celle qu’on a eu avec la commande ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
était codé en SHA256.
Vous pouvez vous assurer en affichant uniquement le contenu du fichier ssh_host_ed25519_key.pub
:
[root@remote]# cat /etc/ssh/ssh_host_ed25519_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBnJJhjSqW6hRnqjxPxsaw1XK86nJuPhurppVsKY4qcw
Lors des prochaines connexions, SSH comparera l’empreinte enregistrée à l’empreinte de la machine distante. S’ils correspondent, SSH ne vous le demandera plus.
Par contre si ce n’est pas le cas, notre famouse erreur s’afficher
Ainsi si un changement de Fingerprint est détecté, l’erreur WARNING : REMOTE HOST IDENTIFICATION HAS CHANGED!
s’affiche pour vous prévenir que ce n’est probablement pas la machine auquel vous souhaitez vous connecter et que vous êtes probablement un victime d’une attaque de type « man in the middle attack » :
[root@Local ~]# ssh 192.168.139.189
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:svYsFY/ZseNgsnUjOOHI9lgK-/p6éOFGPa2qcCVyWG4.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:59
ECDSA host key for 192.168.139.189 has changed and you have requested strict checking.
Host key verification failed.
Résoudre l’erreur
Pour résoudre le souci, vous avez deux options :
Option1:
si vous vous voyez que le changement est normale, par exemple suite à un changement manuelle de l’enpreint digitale ou l’adresse IP n’appartient plus à la machine.
Option2:
Au contraire, vous ne devez pas accépter la connexion car vous êtes probablement un victime d’une attaque de type « man in the middle attack »
.
Donc supposant que l'option 1
vous correspond, il suffit de supprimer la ligne lié à l’empreinte digital de la machine distant. Pour cela taper la commande suivante :
# ssh-keygen -R <remote_IP_or_hostname>
Ainsi, dans mon cas voici la commande à taper :
# ssh-keygen -R 192.168.139.189
Sinon, vous pouvez supprimer la ligne correspondant à votre machine diretement depuis le fichier ~/.ssh/known_hosts
.
Une fois fait, vous pouvez vous connecter come si c’est la 1ère connexion à cette machine :
[root@Local ~]# ssh 192.168.139.189
The authenticity of host '192.168.139.189 (192.168.139.189)' can't be established.
ED25519 key fingerprint is SHA256:Dyffx2i9mcc3GFF9D524hJ/z7WdrWwGB8KNBHpChVDM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
How to check the lock status of a user account in Linux
Le fonctionnement du routeur
Apache : Apprendre à créer des virtual Hosts
Iptables : 12 commandes à connaître
Fail2Ban : How to protect Linux services