mardi 28 octobre 2008

Comment résoudre le problème 'Remote host identification has changed' avec ssh


Après mise-à-jour des composants de ssh, pour des raisons de sécurité par exemple, ou d'autres raisons obscures, vous obtenez le type de message suivant lorsque vous voulez vous connecter via ssh sur la machine concernée:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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

Tout-à-fait normal dans ce cas. Gênant si vous vous en appercevez juste quand vous êtes très pressé, sinon plutôt rassurant pour votre sécurité.

Plusieurs solutions expéditives existent:
  • supprimer ~/.ssh/known_hosts: pas très 'élégant', et vous perdez dans ce cas les informations concernant les autres machines-serveur ssh aussi
  • supprimer la ligne concernant la machine que vous voulez atteindre, dans ~/.ssh/known_hosts: faudrait déjà que le fichier ne soit pas crypté, ou que vous ayez un module crypto greffé sur le bulbe mou
  • etc...

Pourquoi tant de violence, alors qu'il suffit d'une commande pour générer la clé de nouveau?

ssh-keygen -R hostname

'hostname' étant la machine, par exemple l'adresse ip, que vous voulez atteindre par ssh. (192.168.0.x etc...)

Est-il besoin de le repéter, Linux est loin d'être une boîte noire surtout en matière de sécurité. Pour plus d'informations, ne serait-ce que pour comprendre ce que je suis en train de vous dire de taper sur votre machine, le plus simple avant de déranger google est, comme d'habitude, de commencer par:

man ssh-keygen