GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grundlagen des Linux-Systemadministrators:Fehlerbehebung bei Known_hosts-Fehlern

SSH ist einfach zu bedienen und funktioniert im Allgemeinen problemlos. Aber es gibt diese kleine Datei in Ihrem Home-Verzeichnis, die zu einem seltenen Schmerzpunkt für dieses allgegenwärtige Protokoll und Werkzeug werden kann. Die angreifende Entität ist ~/.ssh/known_hosts Datei. Wenn Sie es noch nicht wussten, sollten Sie sich jetzt informieren. Diese Datei wird irgendwann in Ihrer Karriere auftauchen.

Wenn Sie jemals die folgende Nachricht gesehen haben, können Sie entweder ausflippen, dass jemand versucht, Sie zu hacken, oder Sie können feststellen, dass DHCP oder eine andere Anomalie eine spottbillige schmutzige Tat an Ihnen vollbracht hat:

$ ssh 192.168.1.84

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k.
Please contact your system administrator.
Add correct host key in /Users/khess/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/khess/.ssh/known_hosts:4
ECDSA host key for 192.168.1.84 has changed and you have requested strict checking.
Host key verification failed.

Was hier passiert ist, ist, dass Sie versucht haben, eine Verbindung zu einem System herzustellen, das nicht mehr die IP-Adresse 192.168.1.84 hat. Ein anderes System hat diese IP-Adresse und SSH beschwert sich, dass Sie möglicherweise gehackt werden. Die Realität ist oft viel weniger aufregend. Ihre known_hosts Die Datei wird möglicherweise nicht mit der tatsächlichen Host-Realität synchronisiert.

Mehrere Dinge können dieses Spiel mit IP-Adressen-Spielstühlen verursachen. Eines der Systeme könnte für einen längeren Zeitraum ausgefallen sein und als die Lease eines anderen abgelaufen war, schnappte es sich die nächste verfügbare IP-Adresse. Ein Patchereignis und ein anschließender Neustart haben dazu geführt, dass einige Ihrer Systeme unterschiedliche IP-Adressen erhalten haben. Das System könnte neu installiert und eine neue Identität generiert worden sein, oder vielleicht hat sich jemand schlau gemacht und Ihren Serversystemen statische IP-Adressen gegeben. (Meiner Meinung nach sollten alle Server statische IP-Adressen haben. Dasselbe gilt für alle unterstützenden Komponenten wie Router, Switches, Access Points, IoT-Geräte, Kameras, Konferenzraumsysteme und sogar Drucker. Nur Endbenutzergeräte sollten eine haben das zweifelhafte Privileg, zufällige IP-Adressen zu erwerben. Ich habe meine Gründe für diese starke Meinung, die ich später in einem anderen Artikel teilen werde.)

Unabhängig davon, wie es passiert ist, hat das System, mit dem Sie sich verbinden wollten, eine neue IP-Adresse. Eine, die Ihrem System ebenfalls bekannt ist, jedoch mit einem anderen Fingerabdruck.

Die oben erwähnten known_hosts Datei ist eine einfache Textdatei, die sich in einem versteckten Verzeichnis befindet (.ssh ) in Ihrem Home-Verzeichnis. Um seinen Inhalt anzuzeigen, geben Sie den folgenden Befehl ein:

$ cat .ssh/known_hosts

192.168.1.97 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMJWpXf8Ou/XJ1Q5YcIS5Me4GgN1F7AYHbvIPayfGqwd90kvhQygrPCYEqVdw44lEOIZe+DEKP4F6Otdt38yf68=

192.168.1.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJRNTZm8M9IYYN3uJL/yCPv4EJRMDZkkcnt1CY8L6OR84wstYdhqtNqV0v/LQiz/AoRbHKxPTdjXfIOrc1vYDHc=

ken,192.168.1.69 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB53lh2RyFiMfJFKBkLa643lS4GGILG6oVGq33KyBSgaDU2ZHryYak1FU1HcPa6Xb/xYqEUugv9cOXFRwajbrmg=

192.168.1.84 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMGjMsJPX4bfdEnVy59Uf2VhH1oAt7Zemd5bfSoSGxX69HBcjkekO/LkEZUlhVplBlHFqJBqs2gWYp3zVDCTwr4=

192.168.1.64 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIkK9WylcZcgjT7gUz9DMLehUBApION1CLiBVc3Pa/YfAbIDUlIWta12zL5B12RmBXgoYvntdW5rcowPiqjL0/o=

Die einfache Lösung für dieses Problem besteht darin, known_hosts zu entfernen -Datei und ermöglichen die Generierung neuer Schlüssel für jeden Host, mit dem Sie sich verbinden. Für diese Demonstration entferne ich den 192.168.1.84 Eintrag von known_hosts Datei und verbinden Sie sich dann mit dem neuen Host unter dieser Adresse, damit Sie einen Vergleich dessen sehen können, was während des Prozesses passiert. Entfernen Sie zuerst einen known_hosts Eintrag mit dem ssh-keygen Befehl:

$ ssh-keygen -R 192.168.1.84 -f .ssh/known_hosts

 Host 192.168.1.84 found: line 4
.ssh/known_hosts updated.
Original contents retained as .ssh/known_hosts.old

Der ursprüngliche Eintrag wird unter .ssh/known_hosts.old gespeichert falls es in Zukunft benötigt wird.

Nach dem Entfernen von 192.168.1.84 Eintrag von den  known_hosts -Datei habe ich erneut versucht, die Verbindung zum Host 192.168.1.84 herzustellen :

$ ssh 192.168.1.84
The authenticity of host '192.168.1.84 (192.168.1.84)' can't be established.
ECDSA key fingerprint is SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k.
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.84' (ECDSA) to the list of known hosts.

Sie können sehen, dass der Schlüssel, den ich hinzugefügt habe, jetzt mit dem übereinstimmt, der in der Fehlermeldung am Anfang des Artikels aufgeführt ist. Um den Schlüssel eines Hosts zu überprüfen, führen Sie den folgenden Befehl auf dem Remote-Host aus:

$ ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k no comment (ECDSA)

Abschluss

Sofern Sie keine statischen IP-Adressen verwenden und Ihre Systeme sich nie ändern, werden Sie dieses Problem irgendwann in Ihrer Karriere haben. Es passiert mir ständig, weil ich mehrmals im Monat virtuelle Maschinen erstelle und zerstöre. Tatsächlich passiert es so oft, dass ich inzwischen ein Skript haben sollte, das known_hosts entfernt Datei am Anfang jedes Monats.

Im Idealfall müssten Sie nie einen Eintrag aus known_hosts entfernen Datei (oder die gesamte Datei). Aber wenn es sein muss, hast du gerade gelernt, wie es geht.

Imbiss:known_hosts , ssh-keygen

[Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.]


Linux
  1. Fehlerbehebung bei Hardwareproblemen unter Linux

  2. Grundlagen der Linux-Dateiberechtigungen

  3. Meine 5 Lieblings-Linux-Systemadministrator-Tools

  4. Linux-Fehlerbehebung 101:Systemleistung

  5. Linux-Befehlsgrundlagen:printf

Ein Leitfaden für Anfänger zur Netzwerkfehlerbehebung unter Linux

Linux-Systemadministratorgrundlagen:NIC beim Booten starten

Grundlagen der Linux-Befehlszeile:sudo

Sysadmin-Tools:exa, eine moderne Alternative zu ls in Linux

Die Einführung eines Linux-Systemadministrators in cgroups

Grundlagen des Ethernet-Bonding unter Linux