Lors de la première connexion, le client indique qu’il ne peut authentifier l’hôte.
$ ssh laurent@192.168.21.164
The authenticity of host '192.168.21.164 (192.168.21.164)' can't be established.
ECDSA key fingerprint is SHA256:AWEa0Hd+1k0GAzuemRfaLs+CzPIgXXJ9DaoONx6zhZM.
Are you sure you want to continue connecting (yes/no)?
Cette étape est importante pour assurer la sécurité du SI
En effet, pour authentifier le serveur, il lui demande de déchiffrer avec sa clef publique une chaîne générée aléatoirement par le client.
Seul le serveur correspondant la clé privée correspondante pourra déchiffrer cette chaîne.
Lors d’une attaque Man-In-the-Middle, un attaquant va monter un serveur pour tenter de récupérer les login/mot de passe d’un utilisateur (qu’il pourrait utiliser pour attaque le serveur authentique).
Le serveur aura la même adresse IP que le serveur cible (pour tenter de tromper le client)
Pour connaître les empreintes des clés du serveur, il faut être connecté directement sur le serveur (ou à distance par une connexion authentifiée précédemment)
Selon la clef à afficher:
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
Pour toutes les clefs du serveur:
ssh-keyscan localhost 2> /dev/null | ssh-keygen -l -f -
Ou:
echo /etc/ssh/*.pub | xargs -n 1 ssh-keygen -lf
Et aussi (source)
Si l’empreinte à comparer ressemble à cette forme:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
Ajouter l’option -E md5
:
ssh-keygen -l -E md5 -f ssh_host_ecdsa_key.pub
GitHub’s SSH key fingerprints - GitHub Docs
Ne pas suivre les instructions données ici : https://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html