bitlvl
DE

SSH-Key-Fingerabdruck & -Konverter

Fügen Sie den Inhalt einer .pub-Datei oder einen PEM-Public-Key ein. Sie erhalten die Fingerabdrücke, die ssh-keygen ausgeben würde, die Schlüsseldetails, das andere Format und eine authorized_keys-Zeile mit den Einschränkungen Ihrer Wahl.

authorized_keys-Zeile

Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.

Fingerabdrücke

Ein Fingerabdruck ist ein Hash des Public-Key-Blobs, kurz genug zum Vergleichen per Auge. OpenSSH zeigt seit Version 6.8 SHA-256 in Base64 (SHA256:…); die ältere Form MD5:xx:xx:… zeigen GitHub, AWS und alte Dokumentation für manche Schlüssel noch. Beide werden hier aus denselben Bytes berechnet, die ssh-keygen -lf key.pub hasht, und stimmen daher exakt überein. Nutzen Sie sie, um zu bestätigen, dass ein Schlüssel in authorized_keys der gedachte ist, um eine Host-Key-Warnung mit dem ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub des Servers abzugleichen und um Schlüssel in Cloud-Konsolen zu identifizieren.

Schlüsseltypen

TypGrößeUrteil
ssh-ed25519256 BitBeste Wahl: klein, schnell, keine Parameterfehler möglich. Unterstützt seit OpenSSH 6.5 (2014).
ssh-rsa2048–4096In Ordnung mit SHA-2-Signaturen (rsa-sha2-256/512, in aktuellem OpenSSH automatisch); 3072+ Bit für neue Schlüssel. Der Typname ist derselbe, ob SHA-1- oder SHA-2-Signaturen genutzt werden.
ecdsa-sha2-nistp256/384/521256–521In Ordnung, aber Ed25519 wird bevorzugt; NIST-Kurven hängen von gutem Zufall beim Signieren ab.
ssh-dss1024Veraltet; seit 7.0 standardmäßig deaktiviert, in 9.8 entfernt.
[email protected]256Schlüssel auf einem FIDO2-Security-Key (YubiKey); braucht pro Verwendung eine Berührung.

Formate

Der OpenSSH-Einzeiler ist typ base64-blob kommentar, wobei der Blob den Typnamen und die Schlüsselfelder als längenpräfixierte Strings enthält. PEM PUBLIC KEY (SubjectPublicKeyInfo) ist, was OpenSSL, JWT-Bibliotheken und die meiste Nicht-SSH-Software wollen. ssh-keygen -e -m PKCS8 -f key.pub konvertiert in die eine Richtung, ssh-keygen -i -m PKCS8 in die andere; diese Seite macht beides ohne die Flags.

Einen Schlüssel einschränken

Optionen am Anfang einer authorized_keys-Zeile begrenzen, was der Schlüssel darf: from= beschränkt Quelladressen, command= erzwingt einen einzigen Befehl (der ursprüngliche steht in $SSH_ORIGINAL_COMMAND), und restrict schaltet Weiterleitung, PTY und Agent mit einem Wort ab. Ein Backup-Schlüssel sollte restrict,command="rrsync /backup" sein; ein Deploy-Schlüssel sollte nichts außer dem Deploy-Skript erlauben.

Fragen

Wie bekomme ich meinen öffentlichen Schlüssel?

cat ~/.ssh/id_ed25519.pub (oder id_rsa.pub). Wenn Sie nur den privaten Schlüssel haben: ssh-keygen -y -f ~/.ssh/id_ed25519 gibt den öffentlichen Teil aus. Fügen Sie den privaten Schlüssel (die Datei ohne .pub) nirgendwo ein.

Warum zeigt GitHub einen anderen Fingerabdruck?

GitHub zeigt SHA256-Fingerabdrücke für seit 2018 hinzugefügte Schlüssel und MD5 für ältere. Vergleichen Sie das passende Format; beide werden hier gezeigt. Stellen Sie auch sicher, dass Sie dieselbe Schlüsseldatei betrachten.

Wie prüfe ich den Host-Key-Fingerabdruck eines Servers?

Auf dem Server: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Vergleichen Sie mit dem, was der Client bei der ersten Verbindung ausgibt. Cloud-Anbieter zeigen ihn in der Konsole oder im seriellen Log; GitHub veröffentlicht seine Fingerabdrücke in der Dokumentation.

Kann das Tool einen privaten Schlüssel konvertieren?

Nein, absichtlich. Die Konvertierung privater Schlüssel gehört auf Ihren eigenen Rechner: ssh-keygen -p -m PEM -f key (OpenSSH → PEM) oder ssh-keygen -p -m RFC4716. Nichts, was Sie hier einfügen, wird gesendet, aber ein privater Schlüssel sollte nie in einen Browser gelangen.