Generando claves SSH de Debian con Python (biblioteca de paramiko)

0

Estoy creando un script de Python que genera claves SSH para la instalación de mi tarjeta raspberry pi SD antes de iniciar la SD por primera vez, así que puedo obtener las huellas digitales sin tener que iniciarla por primera vez para que se genere. las teclas

/etc/ssh $ ls
moduli                ssh_host_ecdsa_key        ssh_host_key.pub
ssh_config            ssh_host_ecdsa_key.pub    ssh_host_rsa_key
sshd_config           ssh_host_ed25519_key      ssh_host_rsa_key.pub
ssh_host_dsa_key      ssh_host_ed25519_key.pub
ssh_host_dsa_key.pub  ssh_host_key

Estoy usando paramiko para generar las claves. He generado DSA, RSA y ECDSA usando:

paramiko.RSAKey.generate(4096)
paramiko.DSSKey.generate(2048)
paramiko.ECDSAKey.generate(bits=521)

Sin embargo, Paramiko no generará ssh_host_ed25519_key . Sin embargo, la biblioteca que utiliza paramiko puede generarla: enlace

También he notado que la firma para ecdsa.generate es:

 classmethod generate(curve=<cryptography.hazmat.primitives.asymmetric.ec.SECP256R1 object>, progress_func=None, bits=None)

¿Es <cryptography.hazmat.primitives.asymmetric.ec.SECP256R1 object> una clase que puede generar el ssh_host_ed25519_key ?

Estoy preguntando por esto porque no quería usar el cryptography.hazmat directamente debido a este consejo:

  

Peligro

     

Este es un módulo de "Materiales peligrosos". SOLO debe usarlo si   estás 100% seguro de que sabes lo que estás haciendo porque   Este módulo está lleno de minas terrestres, dragones y dinosaurios con láser.   armas.

    
pregunta Lucas Zanella 09.09.2017 - 00:19
fuente

1 respuesta

1

cryptography.hazmat.primitives.asymmetric.ec.SECP256R1 hace ECDSA en SECP256R1 (RFC 5480). ssh_host_ed25519_key se basa en la Curva25519 de Bernsteins. Son curvas diferentes, por lo que las claves son incompatibles. Posiblemente puede intentar insertar la curva alternativa en la función de generación, pero también debe tener en cuenta que no tiene have para tener cada tipo de clave, solo le da más flexibilidad.

    
respondido por el David 09.09.2017 - 03:33
fuente

Lea otras preguntas en las etiquetas