J'ai construit plusieurs machines virtuelles au cours des dernières semaines. Le problème est que cela .ssh/known_hosts
me donne l' avertissement de l' homme au milieu . Cela se produit car une autre empreinte digitale est associée à l'adresse IP de la machine virtuelle.
Dans le .ssh/known_hosts
fichier, cependant, je ne trouve pas l’enregistrement lié à l’IP, seulement deux chaînes bizarres ressemblant à des clés et "ssh-rsa".
Quelqu'un a-t-il des idées sur la façon de retirer l'ancienne clé known_hosts
?
ssh
hosts
openssh
man-in-the-middle
Adam Matan
la source
la source
HashKnownHosts yes
défini.Réponses:
Modifie le fichier ~ / .ssh / known_hosts: 6, en supprimant la 6ème ligne.
À mon avis, l’utilisation
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 source
/etc/sudoers
sansvisudo
. Si vous voulez affiner vossed
compétences, allez-y sans gâcher votre système.ssh-keygen -R
etsed -i {line}d
êtes assez "officiel", et les deux fonctionneront dans un avenir prévisible. Util ssh-keygen permet la suppression par numéro de ligne, les deux sont parfaitement acceptables (car les numéros de ligne sont souvent plus faciles à traiter et moins sujets aux erreurs que les noms d'hôte de centres de données modernes).man ssh-keygen
mentions quessh-keygen -R hostname
vous venez de diressh-keygen -R
sans nom d' hôte spécifié, et vous ne l' avez pas expliqué ce que vous entendez par là.La solution la plus simple est:
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:
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.
la source
ssh-keygen -R hostname
va travailler aussi.ssh-keygen
option a été ajoutée à cause d'un commentaire, mais sans explication. Je ne pense pas que cette réponse mérite autant de votes positifs.Il existe un commutateur ssh-keygen (
-R
) pour cela.man ssh-keygen
lit:la source
[localhost]:port
, en utilisant les crochets parce que j'ai utilisé un port personnalisé je suppose = /. Comme d'autres l'ont déjà dit, j'utiliserais également l'approche de vérification sans clé SSH pour le développement de mon système transitoire / test.ssh-keyscan -H my.ssh.server.example.com >> ~/.ssh/known_hosts;
L'avertissement vous indiquera la ligne exacte dans le fichier hosts connu.
Voici un exemple:
Voir la
/home/user/.ssh/known_hosts:6
partie? Il spécifie le fichier et le numéro de ligne.la source
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, remplacez simplement la valeur après -R
la source
ssh-keygen -R
toutes les autres réponses jusqu'à présent. Cela montre par exemple exactement ce que vous pouvez écrire après-R
. Donc, cette réponse en vaut la peine, même si ce n’est pas une réponse totalement nouvelle.Vous pouvez également demander à ssh de ne pas vérifier le fichier known_hosts à l'aide des indicateurs UserKnownHostsFile et StrictHostKeyChecking.
Par exemple:
Pour la facilité d'utilisation, vous pouvez alias ceci:
Vous pouvez maintenant mettre en gras chaque fois que vous êtes sûr de faire confiance au certificat du serveur.
la source
~/.ssh/known_hosts
à jour? Pourquoi ne pas simplement aller de l'avant et utilisertelnet
? "chaque fois que vous en êtes sûr" - si vous en êtes sûr, alors vous n'avez aucune idée de ce qu'est une attaque de MITM et vous devriez probablement passer un peu de temps à lire de la bonne littérature.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.
Commande de suppression de signature d'hôte SSH simple:
Suppression de la clé ssh complexe, par exemple vous vous connectez à ssh sur le port non standard 222:
et vous obtenez un avertissement, et pour le supprimer, vous devez utiliser le numéro de port du côlon entre crochets:
J'espère que cela aidera les utilisateurs de configuration non standard.
la source
Voici une méthode utilisant l'éditeur Ex:
où 6 est votre numéro de ligne mentionné dans le message d'avertissement. Comme celui-ci:
En général, il est conseillé d'utiliser
ex
pour éditer les fichiers non-interactive , au lieu desed
, qui est plus un S tream ED Itor et son-i
paramètre qui est une extension FreeBSD non standard.la source
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.
la source
Vous pouvez également supprimer une seule ligne des hôtes connus, par exemple avec rmknownhost 111 (111 est la ligne à supprimer):
Enregistrez ceci
rmknownhost
dans un dossier de votrePATH
.la source
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
et appelez-le avecsshdel [line number]
. pas de rubis, pas de binaire, pas de soucis.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.
la source