
Wie kann ich den Fingerabdruck eines neu verbundenen Hosts überprüfen, wenn ich versuche, von meinem Remote-Computer aus eine Verbindung zum Heimcomputer herzustellen? Bei der ersten Verbindung erhielt ich Folgendes:
[email protected]$ ssh [email protected]:~/
The authenticity of host '[home-machine.org]:222 ([x.xx.xx.xx]:222)' can't be established.
ECDSA key fingerprint is SHA256:6lr/VtTwgrKZVNZQ8y8Le/ilfBYfo0e+9UliSg+AD2k.
Are you sure you want to continue connecting (yes/no)?
Wie kann ich den Fingerabdruck meines „Heimcomputers“ überprüfen? Ich habe versucht, sie auf meinem Heimcomputer wie folgt aufzulisten:
[email protected]:~$ for pubkey_file in /etc/ssh/*.pub; do ssh-keygen -lf ${pubkey_file}; done
1024 d1:ef:db:b4:24:fc:ca:fe:e1:11:8c:36:0a:77:90:49 /etc/ssh/ssh_host_dsa_key.pub (DSA)
256 d9:25:51:16:ca:76:bd:8f:b8:6a:79:a2:1c:81:4b:4c /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
2048 3a:c6:2d:29:7c:b9:16:e8:ed:1c:a8:26:5d:ab:0d:1e /etc/ssh/ssh_host_rsa_key.pub (RSA)
[email protected]:~$
Aber diese Schlüssel scheinen ein anderes Format zu haben. Ist das eine Art MD5-Fingerabdruck? Wie kann ich diese Fingerabdrücke in einem einheitlichen Format erhalten?
Antwort1
Ihr SSH-Server stellt SHA256-Public-Key-Hashes bereit, die weitaus sicherer sind als MD5-Hashes.
Sie müssen dann ssh-keygen mitteilen, dass Sie SHA256 statt MD5-Hashes wünschen. Versuchen Sie, den Befehl auf IhremHeimmaschine(zu dem Sie in Ihrem Beispiel vom Remotecomputer aus eine Verbindung herzustellen versuchen):
for pubkey_file in /etc/ssh/*.pub; do ssh-keygen -lf ${pubkey_file} -E sha256; done
Antwort2
Verwendete Befehle
Zeigen Sie den ASCII-ART-Code des auf dem Server gespeicherten öffentlichen Hostschlüssels an (muss auf der Serverseite erfolgen, mit der Sie sich per SSH verbinden):
ssh-keygen -l -v -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
-l: Fingerabdruck der angegebenen öffentlichen Schlüsseldatei anzeigen.
-v: visuell (ASCII-Art)
-E md5: der Hash-Algorithmus, der zur Berechnung des Fingerabdrucks verwendet wurde („md5“ oder „sha256“). („sha256“ wird bevorzugt, falls verfügbar). (ist möglicherweise in alten Versionen von ssh-keygen nicht verfügbar)
-F: Datei
Zeigt den öffentlichen Hostschlüssel des Remote-Servers im ASCII-Format an (muss auf der Clientseite erfolgen, von der aus Sie sich per SSH verbinden):
ssh -o visualhostkey=yes -o FingerprintHash=md5 <host_server_to_connect>
-Ö: Möglichkeit
visueller Hostschlüssel: visuell (ASCII-Art)
FingerabdruckHash: zu verwendender Hash-Algorithmus (verwenden Sie denselben, den Sie vom Server erhalten: md5 oder sha256)
Schritte zum Überprüfen der Authentizität eines Hosts/Servers
Erstens, 1.muss lokal auf dem Server (dem, mit dem Sie sich per SSH verbinden möchten) durchgeführt werden: Sie erhalten ein erstes ASCII-Bild. Drucken Sie es aus oder machen Sie ein Foto.
Zweitens, 2.ist bei der ersten SSH-Verbindung durchzuführen; es wird ein zweiter ASCII-Code angezeigt. Wenn der ASCII-Code derselbe ist, können Sie antwortenJazum"Vertraue ich?"Frage (dh
Are you sure you want to continue connecting (yes/no)
).
Beispiel
- 1. Serverseite
$ ssh-keygen -l -v -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
256 2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6 (ECDSA)
+--[ECDSA 256]---+
| . |
|o o |
| o + . |
| o o . |
| . + S . . |
| + . . . o |
| . .o ..o o |
| ooo....+ |
| o= . E.. |
+-----------------+
- 2. Client-Seite
$ ssh -o visualhostkey=yes -o FingerprintHash=md5 192.168.12.211
The authenticity of host '192.168.12.211 (192.168.12.211)' can't be established.
ECDSA key fingerprint is MD5:2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6.
+---[ECDSA 256]---+
| . |
|o o |
| o + . |
| o o . |
| . + S . . |
| + . . . o |
| . .o ..o o |
| ooo....+ |
| o= . E.. |
+------[MD5]------+
Are you sure you want to continue connecting (yes/no)?
Noch ein paar Erklärungen
Der erste Befehl zeigt das ASCII-Bild an, das dem Fingerabdruck der Datei entspricht, die Sie als Eingabe angeben (und den Fingerabdruck selbst). Die Datei, die Sie als Eingabe angeben, ist die öffentlicheGastgeberSchlüssel des Servers. Wenn ein Client eine Verbindung herstellt (nicht nur beim ersten Mal), sendet der Server seinen öffentlichen Hostschlüssel. Dieser öffentliche Hostschlüssel wird gesucht ~/.ssh/known_hosts
. Wenn der öffentliche Schlüssel in der Datei ist, ist alles in Ordnung: Der Host (Server) ist bekannt, also fahren wir mit dem nächsten Schritt fort, um den Benutzer zu authentifizieren (die Benutzerauthentifizierung wird in diesem Beitrag nicht beschrieben). Wenn der öffentliche Schlüssel nicht in der Datei ist, berechnet der Client den Fingerabdruck dieses öffentlichen Hostschlüssels mit einem Hash-Algorithmus (ein anderer Hash-Algorithmus ergibt einen anderen Fingerabdruck). Dieser zuvor berechnete Fingerabdruck wird angezeigt (zusammen mit dem ASCII-ART, wenn die entsprechende Option vorhanden ist) und Sie müssen mit Ja oder Nein antworten, je nachdem, ob Sie diesen Fingerabdruck erkennen oder nicht (dieser Fingerabdruck ist das Bild/der Hash des öffentlichen Hostschlüssels des Servers). Wenn Sie Ja sagen, wird der öffentliche Schlüssel des Servers (nicht sein Fingerabdruck) zur Datei hinzugefügt ~/.ssh/known_hosts
.
Wir können feststellen, dass ~/.ssh/known_hosts
unterdeinHome-Verzeichnis (~), weilDuVertrauen Sie diesem Host (Server), aber ein anderer Benutzer vertraut ihm möglicherweise nicht wie Sie. Außerdem ist der öffentliche Hostschlüssel des Servers nicht benutzerabhängig und wird daher in gespeichert /etc/ssh/
.
Der zweite Befehl zeigt den Fingerabdruck und die ASCII-Art des öffentlichen Schlüssels an, der vomzu_verbindender_Hostserver(gemäß dem in den Optionen angegebenen Hash-Algorithmus). Dies ist dasselbe, als ob Sie nur SSH verwenden würden, allerdings mit mehr visuellen Optionen, sodass die Verbindung auf dieselbe Weise wie eine normale SSH-Verbindung aufrechterhalten wird.
Antwort3
Server
ssh-keygen -l -v -f /etc/ssh/ssh_host_ed25519_key
Möglicherweise müssen Sie dies mit einer der anderen Dateien in diesem Verzeichnis an den Algorithmus des Clients anpassen. Die Dateien haben die richtigen Berechtigungen, sodass der öffentliche Schlüssel verwendet wird.
Beispielsweise müssen Sie möglicherweise schreiben
ssh-keygen -l -v -f /etc/ssh/ssh_host_rsa_key
Klient
ssh -o visualhostkey=yes -o FingerprintHash=sha256