Se especifica en el PROTOCOL.key de OpenSSH: una cadena mágica openssh-key-v1 más un byte cero, el nombre del algoritmo de cifrado (none o aes256-ctr), el nombre de la KDF (none o bcrypt) con la sal y las rondas (16 por defecto; ssh-keygen -a las aumenta), las claves públicas y una sección cifrada que contiene dos veces un entero de comprobación (para detectar una frase de contraseña incorrecta), las claves privadas y los comentarios. Las claves Ed25519 siempre han usado este formato; desde la 7.8, las claves RSA y ECDSA también, salvo que se indique -m PEM.
Las bibliotecas y herramientas antiguas solo leen PEM (PKCS #1, SEC 1 o PKCS #8): las primeras versiones de JSch, algunos servicios de CI y el código Java que usa las especificaciones de clave estándar fallan con errores como invalid privatekey. Convierte con ssh-keygen -p -m PEM -f key (reescribe el propio archivo) o exporta una clave pública con ssh-keygen -e -m PKCS8. Las claves públicas siguen en la forma de una sola línea type base64 comment.