SSH permet de sécuriser les échanges entre le client et le serveur par chiffrement. Il faut cependant s'assurer que le client se connecte bien sur la machine souhaitée (risque d'attaque man in the middle). Pour cela, il faut connaître l’empreinte de la clé publique du serveur distant afin de s'assurer que la connexion s’établit avec le bon interlocuteur.
Demander à l'administrateur le fingerprint de la clé publique du serveur SSH. On l'obtient avec la commande:
ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub
Lors de la première tentative de connexion, le client SSH affiche le fingerprint du serveur distant et demande à l'utilisateur de valider la connexion. Si celui-ci la valide, l'empreinte est stockée dans le fichier ~/.ssh/know_hosts/. Si l'empreinte n'est pas identique à celle communiquée par l'administrateur, le serveur cible n'est pas l'interlocuteur souhaité, il faut refuser la connexion.
Pour toute connexion ultérieure, l'empreinte enregistrée servira de référence et la connexion au serveur distant sera interrompue si l'empreinte calculée est différente de celle enregistrée.
Si pour une raison quelconque le serveur distant modifie sa clé, le fingerprint enregistré dans le fichier know_hosts du client sera différent. Il sera alors impossible pour le client de se connecter au serveur. L'enregistrement du fingerprint dans le fichier know_hosts devra être supprimé. Comme pour des raisons de sécurité les noms d’hôtes ne sont pas stockés en clair dans le fichier, l’édition manuelle n'est pas évidente. Pour mettre à jour le fichier know_hosts on utilisera plutôt la commande ssh-keygen:
Pour rechercher si un hôte est présent dans le fichier:
ssh-keygen -F sophos.intranet.mairie-tournefeuille.fr
Pour supprimer un enregistrement:
ssh-keygen -D sophos.intranet.mairie-tournefeuille.fr