Zum Inhalt springen
ecdsa.com

OpenSSH-Format für private Schlüssel

Der Container openssh-key-v1, den ssh-keygen seit OpenSSH 7.8 (2018) standardmäßig schreibt, gespeichert als -----BEGIN OPENSSH PRIVATE KEY----- und bei gesetzter Passphrase mit einer bcrypt-basierten KDF verschlüsselt.
Auch geschrieben alsBEGIN OPENSSH PRIVATE KEYopenssh-key-v1PROTOCOL.key

Spezifiziert in PROTOCOL.key von OpenSSH: ein magischer String openssh-key-v1 plus ein Nullbyte, der Name des Verschlüsselungsverfahrens (none oder aes256-ctr), der Name der KDF (none oder bcrypt) mit Salt und Runden (standardmäßig 16, ssh-keygen -a erhöht den Wert), die öffentlichen Schlüssel und ein verschlüsselter Abschnitt mit einer doppelt abgelegten Prüfzahl (um eine falsche Passphrase zu erkennen), den privaten Schlüsseln und Kommentaren. Ed25519-Schlüssel nutzen dieses Format seit jeher; seit 7.8 gilt das auch für RSA- und ECDSA-Schlüssel, sofern nicht -m PEM angegeben ist.

Ältere Bibliotheken und Tools lesen nur PEM (PKCS #1, SEC 1 oder PKCS #8): frühe JSch-Versionen, manche CI-Dienste und Java-Code mit den Standard-KeySpecs scheitern mit Fehlern wie invalid privatekey. Konvertiere mit ssh-keygen -p -m PEM -f key (schreibt die Datei an Ort und Stelle um) oder exportiere einen öffentlichen Schlüssel mit ssh-keygen -e -m PKCS8. Öffentliche Schlüssel bleiben in der einzeiligen Form type base64 comment.

Standards und Quellen

Alle Begriffe