So erhalten Sie einen SSH-Schlüssel-Fingerabdruck
- Fügen Sie eine oder mehrere Zeilen mit öffentlichen Schlüsseln in SSH-Schlüssel ein, oder legen Sie eine
.pub-,authorized_keys- oderknown_hosts-Datei ab. - Jeder Schlüssel bekommt eine Karte mit Typ, Größe oder Kurve, Kommentar, SHA256- und MD5-Fingerabdruck und der exakten Zeile von
ssh-keygen -l. - Wählen Sie, was im Feld Ausgabe steht: SHA256-Fingerabdrücke, MD5-Fingerabdrücke, ein öffentlicher PEM-Schlüssel (SPKI oder PKCS#1), RFC 4716 oder normalisierte OpenSSH-Zeilen.
- Ausgabe kopieren oder Herunterladen. Fingerabdruck kopieren auf einer Karte kopiert nur diesen einen Wert.
Akzeptiert wird mehr als einfache .pub-Zeilen: authorized_keys-Optionen wie from="10.0.0.0/8",command="…", known_hosts-Zeilen mit Hostnamen oder gehashten |1|…-Einträgen, RFC-4716-Blöcke ---- BEGIN SSH2 PUBLIC KEY ----, OpenSSH-Zertifikate, öffentliche PEM-Schlüssel und Dateien -----BEGIN OPENSSH PRIVATE KEY-----.
Wie der Fingerabdruck berechnet wird
Eine OpenSSH-Zeile mit öffentlichem Schlüssel hat drei Teile: den Typ, den Base64-Schlüssel-Blob und einen Kommentar.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4ZlfvPsoxxd6tpkc1MDAJvZf8exJSDeW7a3xQRKA7d alice@laptop
Der Fingerabdruck ist ein Hash des dekodierten Blobs, bei Ed25519 51 Bytes:
| Format | Wert für den Schlüssel oben |
|---|---|
| SHA256 (Standard ab OpenSSH 6.8) | SHA256:XSOBs9uz/dFf9ci88yKGbLMcjtzblRna8F0VOmxZiv8 |
| MD5 (veraltet) | MD5:93:07:89:27:05:e1:7a:5d:92:6e:ab:13:1e:48:90:d5 |
SHA256-Fingerabdrücke werden in Base64 ohne das abschließende = geschrieben, deshalb haben sie nach dem Präfix immer 43 Zeichen. Dieselbe Berechnung in Python:
import base64, hashlib, sys
line = open(sys.argv[1]).read().split()
blob = base64.b64decode(line[1])
digest = hashlib.sha256(blob).digest()
print("SHA256:" + base64.b64encode(digest).decode().rstrip("="))
Warum das = wegfallen darf, steht unter Padding erklärt, mehr unter Base64 in Python.
Einen Host-Schlüssel prüfen, bevor Sie ihm vertrauen
Bei der ersten Verbindung fragt OpenSSH: ED25519 key fingerprint is SHA256:…. Are you sure you want to continue connecting? Die richtige Antwort hängt davon ab, diesen Wert mit einem auf anderem Weg beschafften zu vergleichen:
- auf der Server-Konsole:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub - aus den veröffentlichten Host-Key-Fingerabdrücken Ihres Anbieters
- von einer Kollegin oder einem Kollegen, die den Host schon in
known_hostshaben: Fügen Sie diese Datei hier ein, und jeder Eintrag wird mit seinem Fingerabdruck aufgelistet
Um zu sehen, was ein Server anbietet, ohne sich anzumelden, gibt ssh-keyscan host.example.com | ssh-keygen -lf - alle Fingerabdrücke seiner Host-Schlüssel aus.
Schlüsseltypen am Base64 erkennen
Der Blob beginnt mit dem Schlüsseltyp als String mit Längenpräfix, daher hat jeder Typ einen festen Base64-Anfang:
| Beginnt mit | Schlüsseltyp |
|---|---|
AAAAC3NzaC1lZDI1NTE5 | ssh-ed25519 |
AAAAB3NzaC1yc2E | ssh-rsa |
AAAAE2VjZHNhLXNoYTItbmlzdHAyNT | ecdsa-sha2-nistp256 |
AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29t | sk-ssh-ed25519@openssh.com (FIDO-Sicherheitsschlüssel) |
AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAx | Ed25519-Zertifikat |
Widersprechen sich das Typwort in der Zeile und der Blob, warnt die Karte vor der Abweichung. Das bedeutet meist, dass eine Zeile von Hand bearbeitet wurde.
Warnungen und Grenzen
- RSA unter 2048 Bit wird als schwach markiert, und DSA-Schlüssel werden markiert, weil aktuelles OpenSSH sie deaktiviert.
- Zertifikate (
*-cert-v01@openssh.com) zeigen Schlüssel-ID, Seriennummer, Benutzer- oder Host-Typ, Principals, Gültigkeit, kritische Optionen, Erweiterungen und den Fingerabdruck des signierenden CA-Schlüssels. - FIDO-Schlüssel (
sk-…) und Ed448 werden dekodiert, lassen sich aber nicht in PEM umwandeln. - Der Kommentar, der in einer privaten Schlüsseldatei gespeichert ist, wird nicht angezeigt.
- SHA256 verwendet die WebCrypto-API des Browsers, die eine https-Seite voraussetzt. MD5 berechnet die Seite selbst.
Häufige Fragen
Wie finde ich den Fingerabdruck meines SSH-Schlüssels?
Fügen Sie oben den Inhalt Ihrer .pub-Datei ein, oder führen Sie ssh-keygen -lf ~/.ssh/id_ed25519.pub aus. Beides gibt eine Zeile wie 256 SHA256:XSOBs9uz… alice@laptop (ED25519) aus.
Warum sieht mein Fingerabdruck auf einem anderen Server oder Dienst anders aus?
Meist liegt es am Hash: Ältere Tools und manche Web-Konsolen zeigen MD5 als Hex mit Doppelpunkten (MD5:93:07:89:…), aktuelles OpenSSH zeigt SHA256 in Base64. Stellen Sie Ausgabe auf MD5-Fingerabdrücke, um mit der alten Form zu vergleichen.
Ist es sicher, meine private Schlüsseldatei hier einzufügen?
Das Tool liest aus einer OPENSSH PRIVATE KEY-Datei nur den öffentlichen Abschnitt, der selbst bei passwortgeschützten Schlüsseln unverschlüsselt gespeichert ist, und rührt den privaten Teil nicht an. Die .pub-Datei einzufügen ist trotzdem die bessere Gewohnheit.
Was genau hasht der SHA256-Fingerabdruck?
Den binären Schlüssel-Blob, also den Base64-Teil der .pub-Zeile nach dem Dekodieren. Der Kommentar und der Schlüsseltyp davor gehen nicht ein, ein umbenannter Schlüssel behält also seinen Fingerabdruck.