Warnung "Remote-Host-Identifikation hat sich geändert" bei Verbindung über SSH

21

Ich habe diese Nachricht heute erhalten, als ich mich bei meinem Server anmelden wollte. Was sollte ich tun? Was ist los?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
myusuf3
quelle
2
Abgesehen davon möchten Sie möglicherweise vermeiden, sich lokal und remote als root anzumelden, und stattdessen nicht privilegierte Benutzer in Kombination mit sudo verwenden.
Steve Beattie

Antworten:

12

Haben Sie kürzlich das Betriebssystem auf Ihrem Server neu installiert? Das würde das verursachen.

Um dies zu beheben: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

Lösung 1: Entfernen Sie die Schlüssel mit ssh-keygen

Verwenden Sie die -ROption, um alle zum Hostnamen gehörenden Schlüssel aus einer Datei known_hosts zu entfernen. Diese Option ist nützlich, um gehashte Hosts zu löschen. Wenn Ihr Remote-Hostname server.example.com lautet, geben Sie Folgendes ein:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Jetzt können Sie problemlos eine Verbindung zum Host herstellen.

Lösung 2: Geben Sie den korrekten Host-Key ein /home/user/.ssh/known_hosts

Es ist nicht erforderlich, die gesamte Datei known_hosts zu löschen, sondern nur die fehlerhafte Zeile in dieser Datei. Zum Beispiel, wenn Sie 3 Server wie folgt haben.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Um den 2. Server (myserver.com) zu löschen, öffnen Sie die Datei:

# vi +2 .ssh/known_hosts

Und drücken Sie den Befehl dd, um die Zeile zu löschen. Speichern und schließen Sie die Datei. Oder benutze folgendes

$ vi ~/.ssh/known_hosts

Gehen Sie nun zu Zeile 2 und geben Sie den folgenden Befehl ein

:2

Jetzt Zeile mit dd löschen und beenden:

dd
:wq

Oder Sie können den sed-Befehl wie folgt verwenden, um einen beleidigenden Schlüssel in Zeile 44 zu löschen:

$ sed -i 44d ~/.ssh/known_hosts

Lösung 3: Löschen Sie einfach die Datei known_hosts. Wenn Sie nur einen SSH-Server haben

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Versuchen Sie erneut, eine Verbindung mit ssh herzustellen.
Jetzt sollten Sie in der Lage sein, Ihren Server über ssh zu verbinden:

ssh username@server-ip-here
ssh [email protected]

Als nächstes erhalten Sie eine neue Aufforderung, den Schlüssel ~/.ssh/known_hostswie folgt hinzuzufügen :

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.
Jesaja
quelle
9
Beachten Sie, dass Sie, wenn Sie die SSH-Hostschlüssel Ihres Servers NICHT geändert haben , Ihre Kopie des Hostschlüssels nicht ersetzen sollten , da dies möglicherweise ein Zeichen dafür ist, dass jemand versucht, Ihre Kommunikation durch einen Man-in-the-Middle-Angriff zu untergraben.
Kees Cook
7

Nach allem, was ich sagen kann, geht es bei all diesen Antworten darum, die Warnung zu unterdrücken, anstatt sich damit zu befassen. Kurz gesagt, die Warnung weist Sie darauf hin, dass der Server anders aussieht als früher. Siehe https://en.wikipedia.org/wiki/Man_in_the_middle_attack, warum dies eine Gefahr sein kann.

Lesen Sie man sshinsbesondere diesen Abschnitt:

ÜBERPRÜFUNG DER HOST-KEYS

Beim erstmaligen Herstellen einer Verbindung zu einem Server wird dem Benutzer ein Fingerabdruck des öffentlichen Schlüssels des Servers angezeigt (es sei denn, die Option StrictHostKeyChecking wurde deaktiviert). Fingerabdrücke können mit ssh-keygen (1) bestimmt werden :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Um auf der sicheren Seite zu sein, sollten Sie (oder jemand, dem Sie vertrauen) diesen Befehl zuerst auf dem Server ausführen, zu dem Sie eine Verbindung herstellen. Sie erhalten einen Fingerabdruck, der ungefähr so ​​aussieht wie der in der Warnung in der Frage angegebene. Natürlich haben Sie diese Informationen oft nicht, aber wenn Sie Grund zu der Annahme haben, dass etwas in Betrieb ist, können Sie mit diesem Befehl überprüfen, ob sich die Serversignatur tatsächlich geändert hat oder ob möglicherweise etwas Verdächtiges vor sich geht.

unhammer
quelle
1
Verwenden Sie dies, wenn Ihr Host einen sha256-Fingerabdruck anstelle eines md5-Hashes bereitstellt. ssh -o FingerprintHash=md5 example.org
Declan McKenna
1
Weitere Informationen zu FingerprintHash: superuser.com/questions/929566/… (dh sha256 sollte bevorzugt werden, aber Sie kennen diesen Wert möglicherweise nicht, wenn Sie nicht kürzlich genug aktualisiert haben)
unhammer 22.12.16
2

Ich hatte das gleiche Problem und wenn Sie nicht die gesamte known_hostsDatei löschen möchten , können Sie den folgenden Befehl ausführen:

ssh-keygen -R 10.10.10.69

Das Löschen der known_hosts ist problemlos möglich. Sie müssen nur jeden Server, zu dem Sie eine Verbindung herstellen, bei jeder Verbindung zur Liste hinzufügen. Könnte auch Ihre Skripte vermasseln, da die Hosts noch nicht vertrauenswürdig sind. Die Warnung tritt auf, wenn die Signatur des Hosts (der Computer, mit dem Sie eine Verbindung herstellen möchten, generiert neue Schlüssel, normalerweise aufgrund einer Neuinstallation oder einer Schlüsselrotation).

theTuxRacer
quelle
0

Wenn Sie der Meinung sind, dass eine Warnung falsch positiv ist, können Sie Ihren / root / ssh / known_hosts löschen, um eine neue Überprüfung zu starten.

Ta Coen
quelle
3
Bitte tun Sie dies nicht, Sie werden die anderen bekannten Hosts verlieren. Wenn Sie sicher sind, dass es sich um ein falsches Positiv handelt, löschen Sie stattdessen die folgende Zeile: "known_hosts: 8" Zeile 8 in diesem Fall.
Roger Light
0

Wenn Sie den Server kürzlich neu installiert oder den Hostschlüssel anderweitig geändert haben, ist es wahrscheinlich sicher, Zeile 8 aus Ihrer ~ / .ssh / known_hosts-Datei zu entfernen und den Server erneut hinzuzufügen (indem Sie darauf ssh'ing und mit "yes" antworten) "wenn es nach einer Schlüsselüberprüfung fragt)

elzapp
quelle
0

Da sich Ihr Server in einem lokalen Netzwerk befindet, können Sie ziemlich sicher sein.

Wenn Sie Ihr System neu installiert haben, ist dies normal, aber anstatt Ihre known_hosts-Datei zu entfernen, empfehle ich, dies zu tun echo "" > ~/.ssh/known_hosts

Popinou
quelle
Leute können in einem lokalen Netzwerk immer noch Streiche spielen. Geschäfts- oder Schulnetzwerke haben möglicherweise viel Raum, um nicht vertrauenswürdig zu sein.
Azendale
0

ssh -q macht diesen Trick auch.

Gewohnheit
quelle
0

Kopieren Sie diese Zeile, aber geben Sie den Benutzernamen und den Hostnamen / die IP für userund ein remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Beispielsweise:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

Fügen Sie es in Ihr lokales Terminal ein und führen Sie es aus. Das hat bei mir funktioniert.

Dheerendra
quelle
0

Auf dem Clientknoten, auf dem Sie den ssh ausstellen,

vi ~/.ssh/known_hosts

Löschen Sie alle Zeilen, die mit IP-Adressen beginnen, die sich in demselben Netzwerk befinden wie die IP, in die Sie senden möchten. Dadurch wird der Clientknoten gezwungen, der Liste der bekannten Hosts permanent ECDSA hinzuzufügen.

Anthony Awuley
quelle