245 votes

Supprimer la clé de known_hosts

J'ai construit plusieurs machines virtuelles au cours des dernières semaines. Le problème est que les .ssh/known_hosts me donne le L'homme au milieu avertissement. Cela se produit parce qu'une autre empreinte digitale est associée à l'IP de la machine virtuelle.

Dans le .ssh/known_hosts Cependant, je ne trouve pas l'enregistrement lié à l'IP, seulement deux chaînes bizarres, semblables à des clés, et "ssh-rsa".

Est-ce que quelqu'un a une idée sur la façon d'enlever l'ancienne clé de l'ordinateur ? known_hosts ?

10 votes

Les "chaînes bizarres, semblables à des clés" auxquelles vous faites référence sont les adresses IP/hôtes hachées. Il s'agit d'une fonctionnalité de sécurité qui permet d'empêcher un intrus de savoir à quels systèmes vous avez accès. Si vous voyez cela, c'est que votre ssh_config a été modifié. HashKnownHosts yes set.

1 votes

Si vous avez l'impression que le contenu du fichier est trop confus, vous avez probablement activé le retour à la ligne. Désactivez-la. Toutes les lignes commencent par un nom d'hôte ou une adresse IP.

214voto

Daniel Moura Points 4298

La solution la plus simple est :

rm -f .ssh/known_hosts

ssh recréera le fichier à nouveau, mais vous perdrez la vérification des clés pour les autres hôtes !

Ou, vous pouvez utiliser :

ssh-keygen -R "hostname"

Ou le message "man-in-the-middle" de ssh devrait indiquer quelle ligne du fichier known_hosts contient l'empreinte digitale incriminée. Editez le fichier, allez à cette ligne et supprimez-la.

0 votes

Correct - le numéro de ligne est un peu timide : "Ajouter la bonne clé d'hôte dans /home/adam/.ssh/known_hosts pour se débarrasser de ce message. Clé incriminée dans /home/udi/.ssh/known_hosts:48". J'ai supprimé la ligne 48 et ça a marché !

99 votes

ssh-keygen -R hostname fonctionnera aussi.

0 votes

Merci de le mentionner ssh-keygen -R . Je voulais juste supprimer un hôte de known_hosts à des fins de test (c'est-à-dire sans que la clé de l'hôte ait changé) et cette entrée de l'hôte a été hachée...

209voto

user201564 Points 1981

Il existe un commutateur ssh-keygen ( -R ) pour cela.

man ssh-keygen lit :

-R nom d'hôte

Supprime toutes les clés appartenant à hostname d'un known_hosts fichier. Cette option est utile pour supprimer les hôtes hachés (voir l'option -H option ci-dessus).

25 votes

C'est la méthode la plus simple et la plus sûre.

0 votes

Note : Ceci changera les permissions du fichier known_hosts en 0600. Si vous avez un fichier known_hosts partagé pour une raison quelconque, cela pourrait désactiver le partage de ce fichier.

0 votes

Et le bon. Aussi, j'ai dû faire [localhost]:port J'ai utilisé les crochets parce que j'ai utilisé un port personnalisé, je suppose =/. Comme d'autres l'ont dit, j'utiliserais également l'approche sans vérification de la clé SSH pour le développement de mon système transitoire/de test.

123voto

Kazriko Points 331
sed -i '6d' ~/.ssh/known_hosts

Modifiera le fichier ~/.ssh/known_hosts:6 , en supprimant la 6ème ligne.

À mon avis, utiliser ssh-keygen -R est une meilleure solution pour un utilisateur puissant d'openssh, tandis que votre administrateur Linux ordinaire ferait mieux de maintenir ses compétences sed à jour en utilisant la méthode ci-dessus.

41 votes

Je ne pense pas que ce soit un bon conseil de modifier manuellement un fichier de configuration si vous avez une application officielle pour cela. Prendre des risques ne fait pas de vous un pro, trouver l'option la plus rapide et la plus sûre le fait. C'est comme dire aux gens d'aller de l'avant et d'éditer /etc/sudoers sin visudo . Si vous voulez affiner votre sed les compétences, allez-y et faites-le sans perturber votre système.

3 votes

"si vous avez une application officielle pour cela" => les deux ssh-keygen -R y sed -i {line}d sont assez "officiels", et les deux fonctionneront dans un avenir proche. Util ssh-keygen permet la suppression par numéro de ligne, les deux sont parfaitement acceptables (parce que les numéros de ligne sont souvent plus faciles à gérer, et moins sujets aux erreurs, que de gérer les noms d'hôtes des centres de données modernes).

7 votes

A) La suppression de la 6ème ligne, en particulier, est très "ne cherchez pas". Aucune explication sur la signification de la 6ème ligne du dossier ! B)De plus man ssh-keygen mentionne ssh-keygen -R hostname vous venez de dire ssh-keygen -R sans spécifier de nom d'hôte, et vous n'avez pas expliqué ce que vous entendez par là.

34voto

Tarun Gupta Points 383

Vous devez exécuter la commande suivante pour vous débarrasser de ce problème. Ouvrez le terminal et tapez la commande suivante :

Pour tous les exemples ci-dessous, il suffit de remplacer la valeur après -R :

ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com

1 votes

Cette méthode a déjà été proposée dans les réponses précédentes. Pourriez-vous développer ce qui est différent dans votre réponse ?

2 votes

@Burgi - cette réponse donne plus de détails sur la syntaxe de l'élément suivant ssh-keygen -R que toutes les autres réponses jusqu'à présent. Elle montre par l'exemple exactement ce que vous pouvez écrire après -R . Cette réponse est donc intéressante, même si elle n'est pas totalement nouvelle.

0 votes

@Yitz Mon commentaire a été fait dans le cadre d'un examen. À l'époque (il y a 18 mois), je pensais que la question avait besoin d'un petit coup de pouce pour être encore meilleure.

26voto

Arunas Bartisius Points 1312

Toutes les réponses sont bonnes, mais pour les vrais professionnels de SSH, il manque des informations sur la façon de supprimer la signature ssh avec un numéro de port (non standard).

  • Commande simple de suppression de signature d'hôte SSH :

      ssh-keygen -R example.com
  • Suppression complexe de la clé ssh, par exemple si vous vous connectez à ssh sur un port non standard (222) :

      ssh example.com -p 222

et vous obtenez un avertissement, et pour le supprimer, vous devez utiliser crochets le numéro de port du colon :

    ssh-keygen -R [example.com]:222

Notez qu'il y aura probablement un enregistrement IP pour le même hôte, vous devrez donc le supprimer également.

J'espère que cela aidera les utilisateurs de configurations non standard.

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