Die Verwendung von ssh-keygen -R hostname funktioniert nicht immer. Wenn Sie eine neuere Version von SSH haben, die die Hostnamen "versteckt", um die Entführung von ssh-agent zu verhindern, kann ssh-keygen den Hostnamen anscheinend nicht enthüllen.
Zum Beispiel habe ich einen Host mit dem Namen build-node-01 und habe eine Verbindung dazu hergestellt und den Schlüssel akzeptiert. Ich erstelle es dann von Grund auf neu, erhalte einen neuen Host-Fingerabdruck und versuche erneut, eine Verbindung herzustellen. Ich erhalte eine Warnung, dass in Zeile X ein Konflikt vorliegt (z. B. 3). Ich renne ssh-keygen -R hostname
, aber wenn ich das nächste Mal versuche, eine Verbindung herzustellen, wird trotzdem eine Warnung angezeigt, dass ein Konflikt vorliegt. Ich habe die Datei nur untersucht, um festzustellen, dass der Hostname gehasht und [1] Bu4Ch@R@4D0M57uFF
anstelle eines lesbaren Hostnamens angezeigt wurde.
In diesem Fall war die einzige Möglichkeit, den fehlerhaften Host erfolgreich zu entfernen, die Verwendung
sed -i 'xd' ~/.ssh/known_hosts
Um noch einen Schritt weiter zu gehen, möchten Sie möglicherweise eine Sicherungskopie der known_hosts erstellen, falls Sie die falsche Zeile löschen. Fügen Sie in diesem Fall der Option -i einfach eine .bak-Datei (oder eine beliebige Erweiterung) hinzu, um eine Sicherungskopie zu erstellen Erweiterung. Mit ssh-keygen wird dies automatisch durchgeführt.
sed -i.bak 'xd' ~/.ssh/known_hosts