Est-il possible de supprimer une clé d'hôte particulière du fichier SS_hosts de SSH?
Je finis habituellement par supprimer le known_hosts
fichier entier , ce qui ne me pose aucun problème, mais par simple curiosité, est-il possible de supprimer une seule entrée?
J'ai ouvert le known_hosts
fichier, mais j'ai du mal à comprendre son contenu.
Ci-dessous, le message auquel j'ai été confronté, qui m'a amené à poser cette question:
Add correct host key in /home/wissen16/.ssh/known_hosts to get rid of this message.
Offending key in /home/wissen16/.ssh/known_hosts:1
RSA host key for foo.com has changed and you have requested strict checking.
Host key verification failed.
Original contents retained as /Users/nha/.ssh/known_hosts.old
supposant qu'il en soit de même pour Ubuntu).ssh-keygen -R [ssh.sssshh.com]:1234
Oui, vous pouvez supprimer une seule clé. Ouvrez-le simplement dans un éditeur et supprimez la ligne incriminée. Le numéro après les deux points dans le message d'erreur est le numéro de la ligne, c'est donc la ligne à supprimer - la ligne 1 de votre exemple.
la source
Ce n'est que récemment que j'ai commencé à utiliser les clés d'hôte, mais lorsque je les ai manipulées, il s'agit généralement d'une clé par ligne. Sauvegardez le fichier et supprimez-le un à la fois jusqu'à ce que vous trouviez la bonne. Ajoutez ensuite les autres. Un peu long chemin à faire, mais devrait fonctionner.
Également basé sur cette erreur, et sans aucune idée de ce qui se passait, il pourrait s'agir de la première clé d'hôte du fichier à l'origine du problème. Ouvrez-le avec vim.
vim ~/.ssh/known_hosts
et frapper
dd
puis enregistrez-le.
la source
L'utilisation de ssh-keygen -R nom_hôte ne fonctionnera pas toujours. Si vous utilisez une version plus récente de SSH qui "masque" les noms d'hôte pour empêcher le détournement de ssh-agent, apparemment, ssh-keygen est incapable de libérer le nom d'hôte.
Par exemple, j'ai un hôte appelé build-node-01 et je me suis connecté et j'ai accepté la clé. Je le reconstruis ensuite à partir de zéro, obtenant une nouvelle empreinte digitale d'hôte et j'essaie de me reconnecter. Je reçois un avertissement qu'il y a un conflit sur la ligne X (disons 3). Je cours
ssh-keygen -R hostname
, mais la prochaine fois que j'essaie de me connecter, je reçois toujours un avertissement qu'il y a un conflit. J'ai examiné le fichier uniquement pour découvrir que le nom d'hôte était haché et apparaissait sous la forme[1] Bu4Ch@R@4D0M57uFF
d'un nom d'hôte lisible.Dans ce cas, le seul moyen de supprimer l’hôte fautif consiste à utiliser
Pour aller un peu plus loin dans cette tâche, vous voudrez peut-être effectuer une sauvegarde de l’hôte known_hosts au cas où vous supprimeriez la mauvaise ligne. Dans ce cas, il suffit d’ajouter un fichier .bak (ou toute extension) à l’option -i pour créer une sauvegarde avec celle-ci. extension. Utiliser ssh-keygen fait cela automatiquement.
la source
ssh-keygen -R {hostname}
fonctionnera même lorsque les noms d’hôtes sont "cachés" (hachés). Pourtant, oui, on peut supprimer l'entrée par numéro (par exemple, 10ème entrée viased -i.bak 10d ~/.ssh/known_hosts
), mais ce n'est généralement pas nécessaire. Il se peut qu'un port non standard ait été utilisé. Dans ce cas, vous devrez peut-être formater la commande en tant que (guillemets de notes):ssh-keygen -R '[hostname]:2222'
Juste pour partager une autre réponse claire et facile que je viens de trouver. La suppression du nom d’hôte est pour moi, car le fichier known_hosts est haché. Cependant, je pourrais éditer manuellement l'entrée de l'hôte en fonction du numéro de ligne indiqué dans le message d'erreur. Comme l'a noté précédemment Mike Scott, le numéro de ligne du nom d'hôte incriminé se trouve dans le message d'erreur.
Ou je peux le faire. À partir de là: comment réparer la clé incriminée dans le fichier ssh known_hosts
J'ai eu ce brin de magie
Remplacez le x par le numéro de ligne et le tour est joué. Il offre également une réponse perl si le sed ne fonctionne pas.
la source
Dans ce cas, 10.20.120.211 est l'hôte que je veux supprimer de mon fichier known_hosts, assurez-vous d'échapper aux caractères spéciaux tels que (.)
la source
ssh-keygen -R ...
(de préférence); ou,sed
avec le numéro de ligne spécifique à supprimer. De plus, pour vous mettresed
en place, utilisez-i' option; e.g.,
sed -i.bak 10d ~ / .ssh / known_hosts` pour supprimer la 10ème ligne et (éventuellement) conservez l'original dans un fichier de sauvegarde portant le suffixe.bak
.Vous pouvez éviter de supprimer l'hôte particulier en le mettant à jour:
De cette façon, vous n'avez pas à vous reconnecter à l'hôte.
la source