Gelegentlich wird auf einem Host ein Host-Key geändert, entweder manuell oder eventuell automatisch durch einen Update von OpenSSH. Beim Login per ssh auf den betreffenden Host bekommt man dann die folgende Meldung:
$ ssh aix01
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:xYglDF3cuHCCrxtbFUbpofpmhNs9MiO114vAT4qVX2M.
Please contact your system administrator.
Add correct host key in /home/as/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/as/.ssh/known_hosts:2
RSA host key for aix01 has changed and you have requested strict checking.
Host key verification failed.
$
Viele Administratoren verwenden dann vi (oder einen anderen Editor) um den Eintrag mit dem alten Host-Key aus der known_hosts zu entfernen. Eine Hilfe ist dabei die Angabe der Zeilennummer in der Ausgabe oben, /home/as/.ssh/known_hosts:2 bedeutet der Eintrag steht in der Zeile 2 der Datei.
Man kann den veralteten Host-Key aber viel einfacher mit Hilfe des Kommandos ssh-keygen und der Option „-R“ (remove) entfernen:
$ ssh-keygen -R aix01
# Host aix01 found: line 2
/home/as/.ssh/known_hosts updated.
Original contents retained as /home/as/.ssh/known_hosts.old
$
Das Kommando erstellt eine Kopie der Datei mit der Endung „.old“ und entfernt den gewünschten Eintrag. Das ist um einiges einfacher als mit dem Editor!
Möchte man wissen ob ein Host-Key für ein System schon in der known_hosts existiert, gibt es dafür die Option „-F“ (find):
$ ssh-keygen -F aix02
# Host aix02 found: line 49
aix02,192.168.178.49 ssh-rsa AAAAB3NzaC1yc2E...
$
Es wird der Public Host-Key, sowie die Zeile für das System ausgegeben.