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
| Typ | Größe | Urteil |
|---|---|---|
| ssh-ed25519 | 256 Bit | Beste Wahl: klein, schnell, keine Parameterfehler möglich. Unterstützt seit OpenSSH 6.5 (2014). |
| ssh-rsa | 2048–4096 | In 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/521 | 256–521 | In Ordnung, aber Ed25519 wird bevorzugt; NIST-Kurven hängen von gutem Zufall beim Signieren ab. |
| ssh-dss | 1024 | Veraltet; seit 7.0 standardmäßig deaktiviert, in 9.8 entfernt. |
| [email protected] | 256 | Schlü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.