Ssh : le client libre de OpenSSH

De Linux Server Wiki
Aller à la navigation Aller à la recherche


La clé publique d'un de vos serveurs a changé

Lors de votre première connexion à un serveur ssh, le client ssh vous a demandé si vous vouliez lier l'hostname auquel vous vous connectez à la clé publique annoncée par le serveur ssh. L'acceptation est obligatoire pour vous connecter, et l'association est sauvegardé dans le fichier ~/.ssh/known_hosts. Ce mécanisme de sécurité permet de s'assurer que vous vous connectez toujours au bon serveur et que nous n'allez pas envoyer vos identifiants à un serveur corrompu.

Si, par exemple après une réinstallation, la clé d'un serveur a changé, le client ssh refusera de se connecter en spécifiant l'erreur suivante :

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /home/votrelogin/.ssh/known_hosts to get rid of this message.
Offending key in /home/votrelogin/.ssh/known_hosts:2
RSA host key for <ip> has changed and you have requested strict checking.
Host key verification failed.

Pour rétablir authentification, il faut supprimer la ligne correspondante du fichier ~/.ssh/known_hosts. Pour cela nous allons utiliser ssh-keygen

Pour voir la clé publique associée à un hostname :

ssh-keygen -F hostname

Pour supprimer la clé publique associée à un hostname :

ssh-keygen -R hostname

Vous pourrez ensuite relancer votre authentification ssh et associer la nouvelle clé à l'hostname.

Désactiver la vérification de la clé host publique lors de la connexion à un serveur SSH

.ssh/config :

Host 192.168.1.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Éviter les déconnexions de votre session SSH

Si vous constatez que lors d'une inactivité plus ou moins longue, vous perdez la connexion avec votre serveur SSH, la solution consiste à faire transiter un minimum de données automatiquement pour éviter la coupure de la connexion TCP par votre routeur. Ajoutez les lignes suivantes dans le fichier .ssh/config :

ServerAliveInterval 60
ServerAliveCountMax 20
  • ServerAliveInterval 60 précise qu'il faudra envoyer des données automatiquement toutes les 60 secondes
  • ServerAliveCountMax 20 précise que le client ssh doit attendre 20 absences de réponse du serveur pour considérer la connexion comme morte.

Notez que vous pouvez faire de même sur votre serveur (afin de régler le problème une fois pour toute pour tous les utilisateurs de votre serveur) grâce à la directive ClientAliveInterval à ajouter dans le fichier /etc/ssh/sshd_config.