Lors de la première connexion à un serveur SSH, il est nécessaire de s’assurer que l’on se connecte bien au bon serveur afin d’éviter une attaque man-in-the-middle. Pour cela, on compare l’empreinte (ou fingerprint) du serveur SSH au moment de la connexion. L’administrateur doit au préalable vous fournir l’empreinte du serveur via un moyen de communication sûr : impression sur papier et en main propre, par SMS

Afficher l’empreinte du serveur pour vos utilisateurs

En tant qu’administrateur, il faut fournir aux utilisateurs l’empreinte du serveur sur lequel vous leur fournissez un compte.

$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
2048 c1:91:5e:42:55:5c:74:65:b6:12:32:7e:1f:6d:80:3e   (RSA)

Une variante consiste à l’afficher en mode graphique (randomart).

$ ssh-keygen -lv -f /etc/ssh/ssh_host_rsa_key.pub
2048 c1:91:5e:42:55:5c:74:65:b6:12:32:7e:1f:6d:80:3e   (RSA)
+--[ RSA 2048]----+
|       .oo.=.=+ *|
|       .o.o = .=o|
|       .oo o o oo|
|        ..  E o..|
|        S    . . |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Afficher l’empreinte du serveur sur lequel on se connecte

En tant qu’utilisateur, on vérifie l’empreinte au moment de se connecter.

$ ssh monserveur.local
The authenticity of host 'monserveur.local (192.168.1.24)' can't be established.
RSA key fingerprint is c1:91:5e:42:55:5c:74:65:b6:12:32:7e:1f:6d:80:3e.
Are you sure you want to continue connecting (yes/no)?

Et la variante en mode graphique (randomart).

$ ssh -o VisualHostKey=yes monserveur.local
The authenticity of host 'monserveur.local (192.168.1.24)' can't be established.
RSA key fingerprint is c1:91:5e:42:55:5c:74:65:b6:12:32:7e:1f:6d:80:3e.
+--[ RSA 2048]----+
|       .oo.=.=+ *|
|       .o.o = .=o|
|       .oo o o oo|
|        ..  E o..|
|        S    . . |
|                 |
|                 |
|                 |
|                 |
+-----------------+
Are you sure you want to continue connecting (yes/no)?

Si l’empreinte est différente, attention, le serveur sur lequel vous vous connectez n’est sans doute pas le bon, vous êtes peut-être victime d’une attaque man-in-the-middle.

Si on souhaite systématiquement afficher le randomart à chaque connexion ssh, on pourra ajouter dans notre fichier .ssh/config les lignes suivantes :

Host *
VisualHostKey yes