ssh-keygen no crea una clave privada RSA

72

Estoy tratando de crear una clave privada y tengo un problema.

Cuando lo uso ssh-keygen -t rsa -b 4096 -C "[email protected]", obtengo una clave privada en el siguiente formato.

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

Y esto no se acepta para una aplicación que estoy tratando de usar.

Espero una clave en el siguiente formato RSA.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

¿Cómo creo el formato correcto? Esto es extraño porque todos los demás Mac que tengo crean el formato correcto, excepto el que tengo problemas.

Estoy en un nuevo Mac OS Mojave instalado

Luna
fuente
y los otros Mac no están en Mojave? También estoy en Mojave y obtengo el "nuevo" formato de clave openssh. Así que supongo que otras Mac están en versiones inferiores. Verifique la versión de OpenSSL utilizada.
Zina
@Zina otros Macs también están en Mojave y tienen la misma versión de OpenSSL.
Luna
RSA debería ser el tipo predeterminado. ¿Qué pasa si omite la -t rsaopción por completo?
guzzijason
@guzzijason es lo mismo. Eso es lo que me está volviendo loco. Incluso si omito el -t rsa en mi mac (que funciona), genera RSA correctamente.
Luna
He tenido el mismo problema Como solución alternativa, he usado una versión anterior de openssh para generar la clave. Puede probar si su clave generada es correcta con openssl rsa -text -in key_file -passin 'pass: passphrase'. La versión 7.4p1-16 funciona.
atype

Respuestas:

76

Recientemente enfrenté el mismo problema (después de actualizar a mojave 10.14.1), aquí hay 2 posibles soluciones para este problema.

  • Baje de categoría su binario ssh-keygen (puede obtener fácilmente la versión anterior de cualquier imagen de Linux / Docker)

O

  • Agregue la opción -m PEMa su comando ssh-keygen. Por ejemplo, puede ejecutar ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"para forzar a ssh-keygen a exportar como PEMformato.

Parece que en la versión actual de ssh-keygen en mojave, el formato de exportación predeterminado es RFC4716como se menciona aquí

Apolozeus
fuente
1
El formato de clave pública de exportación predeterminado es de hecho rfc4716, pero el formato en la Q es un formato interno de clave privada y es el formato 'nuevo' de OpenSSH, que no existía en 1999 (!), Y ya no se describe en la actualidad; intente 6.0 a 6.3.
dave_thompson_085
3
No puedo editar la respuesta, pero tenga en cuenta que 1. y 2. son soluciones independientes, no pasos secuenciales. NO necesita degradar para una generación de clave única. Simplemente agregue el-m PEM
sdoxsee
51

Las nuevas claves con formato de clave privada OpenSSH se pueden convertir utilizando la utilidad ssh-keygen al antiguo formato PEM.

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

No es necesario cambiar a una versión anterior de OpenSSH solo para lograr este resultado.

mydeardiary
fuente
Si. Como ya mencioné en los comentarios sobre la respuesta aceptada. serverfault.com/questions/939909/…
sdoxsee
9
Lo que no está claro en la respuesta aceptada es que no necesita crear un nuevo par de claves. Puede tomar su clave existente y convertirla con ese comando. Sobrescribe el archivo, así que creo que es una buena idea hacer una copia de seguridad antes, por si acaso.
Martintama
Gracias por agregar instrucciones sobre cómo convertir una clave privada existente al formato RSA. ¡Acabo de salvar mi tocino!
Craig Blaszczyk