python ssh paramiko ssh-keys ssh-keygen

python - Paramiko no reconoce la clave SSH generada por ssh-keygen: "no es un archivo de clave privada RSA vĂ¡lido"



ssh-keys (1)

Para OpenSSH 7.8 arriba, tienes que engañarlo. Ejecute ssh-keygen -p [-f file] -m pem para cambiar supuestamente la frase de contraseña, pero reutilice la antigua. Utilice -P oldpw -N newpw si desea evitar las indicaciones, como en un script, pero tenga cuidado de hacer que su frase de contraseña sea visible para otros usuarios. Como efecto secundario, esto vuelve a escribir el archivo de claves (si no es ed25519) en formato ''antiguo'' (compatible con OpenSSL y, por lo tanto, compatible con paramiko). (Si desea mantener el archivo de nuevo formato, copie primero.)

Para versiones anteriores de OpenSSH solo haga ssh-keygen -p [-f file] SIN -o .

Además, si lo tienes (o lo obtienes), la utilidad puttygen en la suite PuTTY desde 0.69 hasta arriba admite este formato. En la versión Unix, solo puttygen newfmtfile -O private-openssh -o oldfmtfile (de nuevo excepto ed25519). En la versión de Windows AFAICT debes usar la GUI; cargue el archivo newfmt y haga la clave OpenSSH de conversiones / exportación.

Tengo el siguiente código:

ssh_key = paramiko.RSAKey.from_private_key_file(key_filename)

La clave se ve así:

-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn NhAAAAAwEAAQAAAQEAqdgmJ2AQlmvpCsDWjbpIvIrx4AwtKn2t10wmGZIN9pqcJgQpo3HD

y es válido:

$ ssh-keygen -l -f <mykeyfile> $ 2048 SHA256:x8jlUAObU3q2KXRtuGpxwhnGvB/ZoeD2IUqSA1OkCmI thomas@Thomas-MBP-2017 (RSA)

pero me sale el siguiente error:

no es un archivo de clave privada RSA válido

Esto es en MacOS, Python 2.7, Paramiko 2.4.2

¿Qué estoy haciendo mal?