SSH Host Key aus der Datei known_hosts entfernen

Wenn eine SSH-Verbindung zu einem Server aufgebaut werden soll und der Host Key des Zielservers nicht mit dem Host Key für diesen Server in der lokalen Datei known_hosts übereinstimmt, wird aus Sicherheitsgründen keine Verbindung aufgebaut, da die Identität des Zielservers nicht eindeutig sichergestellt ist.

Beispielhafte Fehlermeldung:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for server.server.test has changed,
and the key for the corresponding IP address 88.188.188.88
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /root/.ssh/known_hosts:13
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
88:88:88:01:7f:f9:19:73:53:79:dd:a5:ac:88:88:88.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:12
RSA host key for server.server.test has changed and you have requested strict checking.
Host key verification failed.

Wenn man die Gründe kennt, warum der Host Key des entfernten Servers nicht mit dem lokal gespeicherten Host Key übereinstimmt, dann kann man den lokalen Host Key aus der Datei known_hosts entfernen.

Bei älteren Linux-Systemen konnte man einfach den Key manuell aus der Datei known_hosts entfernen, da der Servername in Klartext den Key identifizierte. Da bei neueren Systemen aus Sicherheitsgründen der Servername verschlüsselt ist, geht ein manuelles Löschen des Host Key nicht mehr. Man muss nun den Host Key mit dem Programm ssh-keygen und dem Parameter -R und dem Servernamen für den Server, dessen Host Key entfernt werden soll, aus der Datei known_hosts entfernen.

Beispiel:

ssh-keygen -R server.server.test

Nach dem Entfernen des Host Key aus der Datei known_hosts wird man bei einem erneuten SSH-Verbindungsaufbau gefragt, ob man dem Zielserver vertraut. Wenn diese Frage mit “ja” beantwortet wird, dann wird der aktuelle Host Key des Remoteservers der Datei known_hosts hinzugefügt.

Beispiel:

The authenticity of host 'server.server.test (88.188.141.88)' can't be established.
RSA key fingerprint is 88:88:88:01:7f:f9:19:73:53:79:dd:a5:ac:88:88:88.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server.server.test' (RSA) to the list of known hosts.

Zukünftige SSH-Verbindungen zu dem Zielserver sollten dann ohne Sicherheitsabfrage funktionieren.

Quelle: http://www.linuxforme.de

Beteilige dich an der Unterhaltung

2 Kommentare

  1. Es geht auch ohne ssh-keygen -R :
    Wie schon ausgegeben wird, befindet sich der jetzt “falsche” Eintrag in Zeile 12 der known_hosts:
    Offending RSA key in /root/.ssh/known_hosts:12
    Also einfach mit vi /root/.ssh/known_hosts öffnen, und eingeben:
    12G (springe zu Zeile 12)
    dd (lösche diese Zeile)
    ZZ (speichern und vi verlassen)
    Fertig.

  2. Vielen Dank, das hat mir sehr geholfen. Strato wollte es irgendwie nicht kapieren, das bei meinem managed Server diese Probleme auftreten, nachdem ich den anderen (virtuellen) Server mit einem neuen Betriebssystem aufgesetzt habe. Kein scp möglich, da der Remoteserver einen neuen Schlüssel hatte. Jetzt läuft es wieder.
    Vielen Dank hierfür.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert