76 votes

Comment supprimer la vérification stricte des clés RSA dans SSH et quel est le problème ici ?

J'ai un serveur Linux qui, à chaque fois que je me connecte, m'affiche le message indiquant que la clé hôte SSH a été modifiée :

$ ssh root@host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING : REMOTE HOST A CHANGÉ ! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IL EST POSSIBLE QUE QUELQU'UN SOIT EN TRAIN DE FAIRE QUELQUE CHOSE DE MÉCHANT ! Quelqu'un pourrait être vous espionner en ce moment même (attaque man-in-the-middle) ! Il est également possible que la clé hôte RSA ait été ait été modifiée. L'empreinte digitale de la clé RSA envoyée par l'hôte distant est 93:a2:1b:1c:5f:3e:68:47:bf:79:56:52:f0:ec:03:6b. Veuillez contacter votre administrateur système. Ajoutez la bonne clé d'hôte dans dans /home/emerson/.ssh/known_hosts pour vous ce message. Clé incriminée dans /home/emerson/.ssh/known_hosts:377

La clé RSA de l'hôte 1 a changé et vous avez demandé une vérification stricte. La vérification de la clé de l'hôte a échoué.

Je reste connecté pendant quelques secondes, puis je ferme la connexion.

host1:~/.ssh # Lecture depuis l'hôte distant host1 : Connexion réinitialisée par l'homologue Connexion à l'hôte1 fermée.

Quelqu'un sait-il ce qui se passe et ce que je pourrais faire pour résoudre ce problème ?

99voto

grapefrukt Points 16804

Ne supprimez pas l'intégralité du fichier known_hosts comme le recommandent certaines personnes, car cela annule totalement l'objectif de l'avertissement. Il s'agit d'une fonction de sécurité qui vous avertit qu'une attaque de type "man in the middle" a pu se produire.

Je vous suggère d'identifier la raison pour laquelle il pense que quelque chose a changé. Il est fort probable qu'une mise à jour de SSH ait modifié les clés de cryptage en raison d'une éventuelle faille de sécurité. Vous pouvez alors purger cette ligne spécifique de votre fichier known_hosts :

sed -i 377d ~/.ssh/known_hosts

Ce site d supprime la ligne 377 comme indiqué après le deux-points dans l'avertissement :

/home/emerson/.ssh/known_hosts:377

Vous pouvez également retirer la clé correspondante en procédant comme suit

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Veuillez NE PAS purger le fichier entier et assurez-vous qu'il s'agit bien de la machine à laquelle vous souhaitez vous connecter avant de purger la clé spécifique.

39voto

Brian Points 1080

Je pense que même si certaines des réponses données ici traitent du plan d'action recommandé dans la question du PO, elles ne répondent pas entièrement à la question.

La question est la suivante : "Comment supprimer la vérification stricte des clés RSA dans SSH et quel est le problème ici ?"

Le problème ici est, comme l'ont conseillé d'autres personnes, un changement d'hôte probablement dû à une réinstallation du serveur (scénario le plus courant). La solution recommandée est en effet de supprimer la clé incriminée du fichier .ssh/authorized_keys avec un sed en ligne.

Cependant, je n'ai pas vu de réponses à la partie spécifique de la question ". Comment supprimer la vérification stricte des clés RSA dans SSH ".

Vous pouvez supprimer la vérification de StrictHostKey dans votre fichier de configuration ssh, généralement enregistré à l'adresse suivante ~/.ssh/config .

Un exemple de bloc hôte est fourni ci-dessous :

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

La ligne spécifiquement ajoutée est la dernière StrictHostKeyChecking no qui fait exactement ce qu'il faut. En fonction de votre scénario spécifique, cela peut vous être utile, par exemple pour faire tourner plusieurs conteneurs virtualisés sur un serveur dédié, sur quelques ips seulement, en arrêtant et en démarrant une autre instance sur le même ip.

24voto

Greg Dougherty Points 261

Une autre façon de supprimer StrictHostKeyChecking, lorsque vous n'avez besoin de le faire que pour un seul serveur :

ssh <server> -o StrictHostKeyChecking=no

6voto

Dave Cheney Points 18132

Tout d'abord, s'agit-il de votre machine ? Avez-vous sciemment modifié les clés de l'hôte ? Si ce n'est pas le cas, je serais très inquiet que quelque chose ait altéré ces données.

Deuxièmement, activez le débogage ssh,

ssh -vvv user@host

et voyez ce que cela vous indique, essayez également de regarder dans /var/log/secure et /var/log/messages sur le serveur auquel vous essayez de vous connecter pour trouver des indices, sshd donne de bons messages d'erreur.

Troisièmement, cette machine est-elle connectée à Internet ? Devriez-vous vraiment autoriser les connexions root ?

3voto

Vous obtenez ce message parce que quelque chose a changé (nouvelle carte réseau, nouvelle adresse IP, modification du logiciel du serveur, etc.) Security focus propose un article intéressant sur Protection de la clé de l'hôte SSH .

Il suffit de supprimer la clé (en utilisant SFTP ou similaire) du serveur, en modifiant le fichier $HOME/.ssh/known_hosts et accepter le nouveau fichier à la prochaine connexion.

Votre connexion est peut-être interrompue à cause du paramètre StrictHostKeyChecking. Voir ce fil pour un problème similaire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X