Le principe d’authentification du serveur se fait par chiffrement à clef publique du protocole SSH. Le client doit donc connaître la clef publique du serveur sur lequel il veut se connecter avant toute connexion. Pour cela, il existe sur le compte de l’utilisateur sur la machine cliente un fichier stockant la liste des hôtes connus et leur clef publique. Ce fichier est ~/.ssh/known_hosts. Ainsi lors d’une première connexion, si la clef publique du serveur n’est pas connue par le client, le client affiche le message suivant:
The authenticity of host ’porphyre (157.159.110.76)’ can’t be established.
RSA key fingerprint is 9c:dc:c0:33:79:41:ea:68:df:59:7e:ea:3d:4c:64:ec.
Are you sure you want to continue connecting (yes/no)?

Dans ce cas, après avoir vérifié que le serveur est celui auquel l’on veut se connecter, on peut poursuivre la connexion en répondant yes. La clef publique du serveur sera alors transmise au client et le fichier ~/.ssh/known_hosts mis à jour. Le message suivant est affiché:

Host ’nom_hôte’ added to the list of known hosts.

Pour les connexions suivantes, le client utilisera cette clef publique pour authentifier le serveur.

Lorsque le serveur est trouvé dans la liste des hôtes connus mais que la clef publique n’est pas valide alors un message plus insistant est affiché par le client:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
dc:c2:44:9e:90:f5:6d:a4:9a:32:45:c3:17:bc:d2:b2.
Please contact your system administrator.
Add correct host key in /inf/sysrep/conan/.ssh/known_hosts to get rid of this message.
Offending key in /inf/sysrep/conan/.ssh/known_hosts:9
RSA host key for andesite has changed and you have requested strict checking.
Host key verification failed.

Deux cas se présentent alors: le client est victime d’une attaque man-in-the-middle ou le serveur a changé sa clef publique (lors de l’installation d’une nouvelle version du système d’exploitation). Il faut alors éditer le fichier known_hosts et remplacer l’ancienne valeur de la clef publique par la nouvelle.  
 
Retour à la page de cours