382 votes

Est-il possible de supprimer une clé hôte particulière du fichier known_hosts de SSH ?

Est-il possible de supprimer une clé d'hôte particulière du fichier known_hosts de SSH ?

Je finis souvent par supprimer l'intégralité du fichier known_hosts, ce que je n'ai aucun problème à faire, mais juste par curiosité, est-il possible de supprimer une seule entrée ?

J'ai ouvert le fichier known_hosts, mais j'ai du mal à comprendre son contenu.

Voici le message que j'ai rencontré, qui m'a amené à poser cette question :

Ajoutez la bonne clé d'hôte dans /home/wissen16/.ssh/known_hosts pour vous débarrasser de ce message.
La clé erronée dans /home/wissen16/.ssh/known_hosts:1
La clé d'hôte RSA pour foo.com a changé et vous avez demandé une vérification stricte.
Échec de la vérification de la clé d'hôte.

1voto

Anish Sapkota Points 111

Si vous souhaitez supprimer la clé d'hôte pour une certaine adresse IP, cela vous aidera :

ssh-keygen -f "~/.ssh/known_hosts" -R "49.12.89.136"

1voto

mickwombat Points 11

Pour supprimer l'entrée offensante, faites ceci

sed -i '//d' ~/.ssh/known_hosts

J'ai assemblé le script ci-dessous. Enregistrez-le sous ~/.rmhost

#!/bin/bash

rmhost_help()
{
        echo "Utilisation rmhost {ipaddr|hostname}"
        echo "          -h      Afficher ce message d'aide"
        exit 0
}
if [ -z $1 ] || [ $1 == "-h" ]; then rmhost_help

fi

sed -i "/$1/d" ~/.ssh/known_hosts

echo "hôte $1 supprimé"
exit 0

Ensuite, mettez cet alias dans ~/.bashrc

alias rmhost=~/.rmhost

Lorsque vous obtenez l'erreur, tapez simplement 'rmhost {ipaddr|hostname}'

1voto

Celui-ci a fonctionné pour moi. C'est la méthode par défaut affichée à l'écran lorsque j'ai essayé d'ajouter un hôte connu.

ssh-keygen -f "/home/noob/.ssh/known_hosts" -R "172.16.132.132"

Il vous suffit de changer l'adresse IP et le chemin du fichier d'hôte ici.

0voto

Shan Valleru Points 291
sed '/10\.20\.120\.211/d' ~/.ssh/known_hosts > temp && mv temp ~/.ssh/known_hosts

Dans ce cas, 10.20.120.211 est l'hôte que je veux supprimer de mon fichier known_hosts, assurez-vous d'échapper les caractères spéciaux comme (.)

0 votes

Les adresses IP et les noms d'hôtes ne sont plus stockés en clair dans le fichier known hosts, donc cela ne fonctionnera pas. Il faut soit utiliser ssh-keygen -R ... (de préférence); ou, sed avec le numéro de ligne spécifique à supprimer. De plus, pour utiliser sed en place, utilisez l'option -i'; par exemple, sed -i.bak 10d ~/.ssh/known_hosts` pour supprimer la 10ème ligne, et (optionnellement) garder l'original dans un fichier de sauvegarde suffixé par .bak.

0voto

Pablo Bianchi Points 10158

Vous pouvez éviter de supprimer l'hôte particulier en le mettant à jour :

ssh-keyscan -t ecdsa nom_hôte >> ~/.ssh/known_hosts

De cette façon, vous n'aurez pas à vous reconnecter à l'hôte.

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