Формат описан в файле PROTOCOL.key из OpenSSH: магическая строка openssh-key-v1 и нулевой байт, имя шифра (none или aes256-ctr), имя KDF (none или bcrypt) с солью и числом раундов (по умолчанию 16, ssh-keygen -a его увеличивает), открытые ключи и зашифрованный раздел, в котором дважды записано контрольное целое число (чтобы обнаружить неверную парольную фразу), закрытые ключи и комментарии. Ключи Ed25519 всегда хранились в этом формате; начиная с версии 7.8 в нём хранятся и ключи RSA и ECDSA, если не указан -m PEM.
Старые библиотеки и инструменты читают только PEM (PKCS #1, SEC 1 или PKCS #8): ранние версии JSch, некоторые CI-сервисы и код на Java со стандартными спецификациями ключей (KeySpec) выдают ошибки вроде invalid privatekey. Преобразуйте ключ командой ssh-keygen -p -m PEM -f key (она перезаписывает файл на месте) или экспортируйте открытый ключ командой ssh-keygen -e -m PKCS8. Открытые ключи остаются в однострочной форме type base64 comment.