J'ai construit plusieurs machines virtuelles au cours des dernières semaines. Le problème est que le .ssh/known_hosts
me donne le Homme au milieu warning. Cela se produit car une autre empreinte digitale est associée à l'adresse IP de la machine virtuelle.
Dans le fichier .ssh/known_hosts
, cependant, je ne trouve pas l'enregistrement lié à l'adresse IP, seulement deux chaînes bizarres ressemblant à des clés et "ssh-rsa".
Quelqu'un a-t-il une idée sur la façon de supprimer l'ancienne clé de known_hosts
?
sed -i '6d' ~/.ssh/known_hosts
Modifie 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 averti openssh, alors que votre administrateur Linux habituel ferait mieux de conserver ses compétences sed à jour en utilisant la méthode ci-dessus.
La solution la plus simple est:
rm -f .ssh/known_hosts
ssh va recréer le fichier à nouveau, mais vous perdez la vérification des clés pour d'autres hôtes!
Ou, vous pouvez utiliser:
ssh-keygen -R "hostname"
Ou bien le message "Man-in-the-middle" de ssh doit indiquer quelle ligne du fichier known_hosts contient l'empreinte digitale incriminée. Editez le fichier, passez à cette ligne et supprimez-le.
Il existe un commutateur ssh-keygen (-R) pour cela.
l'homme ssh-keygen lit:
-R nom_hôte Supprime toutes les clés appartenant à nom_hôte d'un fichier known_hosts. Cette option est utile pour supprimer les hôtes hachés (voir l’option -H ci-dessus).
L'avertissement vous indiquera la ligne exacte dans le fichier hosts connu.
Voici un exemple:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA Host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the Host
and its Host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE Host IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Voir la partie /home/user/.ssh/known_hosts:6
? Il spécifie le fichier et le numéro de ligne.
Vous pouvez également demander à ssh de ne pas vérifier le fichier known_hosts à l'aide des indicateurs UserKnownHostsFile et StrictHostKeyChecking.
Par exemple:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
Pour la facilité d'utilisation, vous pouvez alias ceci:
alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Vous pouvez maintenant mettre en gras chaque fois que vous êtes sûr de faire confiance au certificat du serveur.
Vous devez exécuter la commande suivante pour vous débarrasser de ce problème. Ouvrez le terminal et tapez la commande suivante:
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
Vous pouvez également supprimer une seule ligne d'hôtes connus avec, par exemple, rmknownhost 111 (111 est la ligne à supprimer):
#! /usr/bin/env Ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}
Enregistrez ceci sous rmknownhost
dans un dossier de votre PATH
.
Toutes les réponses sont bonnes, mais pour les vrais professionnels SSH, il nous manque des informations sur la manière de supprimer la signature SSH avec le numéro de port.
Par exemple. vous vous connectez à
ssh some.Host.name -p 222
et vous obtenez un avertissement, et pour le supprimer, vous devez utiliser le numéro de port du colon:
ssh-keygen -R [some.Host.name]:222
J'espère que cela aidera les utilisateurs de configuration non standard.
L'entrée pour le nom d'hôte ou l'adresse IP doit figurer dans la première colonne. L’avertissement doit également indiquer un numéro de ligne sur lequel se trouve la clé incriminée.
C'est un fichier texte. Vous pouvez facilement éditer avec vi (m) et simplement supprimer la ligne en question (jj) et sauvegarder le fichier (wq). Mais s'il existe une commande spécifique pour supprimer un hôte, c'est probablement la méthode la plus sûre.