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.