web-dev-qa-db-fra.com

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, me montre le message qui a changé la clé d'hôte SSH:

$ ssh root @ Host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @ AVERTISSEMENT: L'IDENTIFICATION DE L'HÔTE À DISTANCE A CHANGÉ! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ IT IS POSSIBLE QUE QUELQU'UN IS FAIRE QUELQUE CHOSE DE MAUVAIS! Quelqu'un pourrait vous espionner en ce moment (man-in -the-middle attack)! Il est également possible que la clé de l'hôte RSA vient d'être 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 /home/emerson/.ssh/known_hosts pour vous débarrasser de ce message. Clé incriminée dans/home/emerson/.ssh/known_hosts: 377

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

Il me permet de rester connecté pendant quelques secondes, puis il ferme la connexion.

Host1: ~/.ssh # Lecture à partir de l'hôte distant host1: connexion réinitialisée par l'homologue Connexion à Host1 fermée.

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

45
setatakahashi

Veuillez ne pas supprimer l'intégralité du fichier known_hosts comme recommandé par certaines personnes, cela annule totalement le point de l'avertissement. C'est un élément de sécurité pour vous avertir qu'un homme au milieu de l'attaque peut s'être produit.

Je vous suggère d'identifier pourquoi il pense que quelque chose a changé, très probablement une mise à niveau SSH a modifié les clés de cryptage en raison d'un éventuel trou de sécurité. Vous pouvez ensuite purger cette ligne spécifique de votre fichier known_hosts:

sed -i 377d ~/.ssh/known_hosts

Cette d supprime la ligne 377 comme indiqué après les deux points dans l'avertissement:

/home/emerson/.ssh/known_hosts:377

Vous pouvez également supprimer la clé appropriée en procédant comme suit

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

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

71
Adam Gibbins

Je pense que bien que certaines des réponses ici traitent de la ligne de conduite recommandée dans la question du PO, cela ne répond pas entièrement à la question.

La question indique "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 conseillé par d'autres, un changement dans l'hôte probablement dû à la réinstallation du serveur (scénario le plus courant). Et 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 vu aucune réponse répondre à 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 stocké dans ~/.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 ça. En fonction de votre scénario spécifique, cela peut vous être utile, comme exécuter plusieurs conteneurs virtualisés sur un serveur dédié, sur quelques ips, arrêter et démarrer une autre instance sur la même IP.

27
Joel G Mathew

Une autre façon de supprimer StrictHostKeyChecking, lorsque vous ne devez le faire que pour un seul serveur:

ssh <server> -o StrictHostKeyChecking=no
11
Greg Dougherty

Tout d'abord, est-ce votre machine? Avez-vous sciemment changé les clés de l'hôte? Sinon, je serais très préoccupé par le fait que quelque chose a modifié ces données.

Deuxièmement, montez le débogage ssh,

ssh -vvv user@Host

et voyez ce que cela vous dit, essayez également de chercher,/var/log/secure et/var/log/messages sur le serveur auquel vous essayez de vous connecter pour obtenir 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?

5
Dave Cheney

En tant que "hôte" [au sens large, cela pourrait être tout, d'une réinstallation/démarrage multiple à un ordinateur entièrement différent avec une adresse IP à laquelle vous vous êtes déjà connecté, par exemple] apparaît au client ssh comme ayant changé, cela vous donne le Erreur.

Il n'est pas nécessaire de désactiver la vérification stricte, et la suppression en gros des clés enregistrées n'est pas judicieuse.

Il est tout à fait possible d'avoir deux clés différentes répertoriées dans known_hosts pour un nom d'hôte ou une adresse IP particulier; vous offrant 2 alternatives selon que vous pensez avoir besoin de la "vieille" clé actuellement stockée dans known_hosts

Soit supprimer la clé particulière à laquelle il se réfère, à l377 des hôtes connus pour l'OP, soit conserver les deux

Le moyen le plus simple de conserver les deux, en évitant la suppression des clés dans les hôtes connus, est

  1. Modifiez unknown_hosts pour ajouter # au début de la "vieille" entrée référencée dans known_hosts [@ l377] temporairement
  2. Connectez [ssh à l'hôte], acceptez l'invite pour ajouter la nouvelle clé "automatiquement"
  3. Ré-éditez ensuite known_hosts pour supprimer le #

plus de réponses sur "Ajouter la bonne clé d'hôte dans les hôtes connus"/plusieurs clés d'hôte ssh par nom d'hôte?

3
Mark

Vous obtenez cela parce que quelque chose a changé (comme une nouvelle carte réseau, une nouvelle IP, un changement de logiciel serveur, etc.). L'accent sur la sécurité contient un article intéressant sur protection de la clé de l'hôte SSH .

Retirez simplement la clé (à l'aide de SFTP ou similaire) du serveur, en modifiant le $HOME/.ssh/known_hosts fichier, et acceptez le nouveau lors de la prochaine connexion.

Votre connexion peut être interrompue en raison du paramètre StrictHostKeyChecking. Voir ce fil pour un problème similaire.

3
user1797