Este tutorial titulado: SSH: Convierte OpenSSH a SSH2 y viceversa parece ofrecerte lo que estás buscando.
Convierta la clave OpenSSH en clave SSH2
Ejecute la versión OpenSSH de ssh-keygen
en su clave pública OpenSSH para convertirla al formato que necesita SSH2 en la máquina remota. Esto debe hacerse en el sistema que ejecuta OpenSSH.
$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub
Convertir clave SSH2 a clave OpenSSH
Ejecute la versión OpenSSH de ssh-keygen
en su clave pública ssh2 para convertirla al formato que necesita OpenSSH. Esto debe hacerse en el sistema que ejecuta OpenSSH.
$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub
El tutorial continúa para mostrar cómo generar los distintos tipos de claves y cómo exportarlas a otros formatos.
¿Usar esto para claves privadas y públicas?
Según la página del manual, la respuesta sería un sí. Al mirar la página del manual, ssh-keygen
se indica lo siguiente para el -e
cambio:
-e This option will read a private or public OpenSSH key file and print
the key in RFC 4716 SSH Public Key File Format to stdout. This option
allows exporting keys for use by several commercial SSH implementations.
Pero en la práctica parecería que ssh-keygen
no puede convertir claves privadas, solo públicas.
Por ejemplo:
# Make a new RSA key-pair
$ ssh-keygen -t rsa -f newkey
# attempt to extract the private key
$ ssh-keygen -e -f newkey > newkey_e
# attempt to extract the public key
$ ssh-keygen -e -f newkey.pub > newkey.pub_e
# Notice the supposed extracted private key (newkey_e) and the corresponding extracted public key (newkey.pub_e) have identical `md5sum`'s.
$ for i in *;do md5sum $i;done
d1bd1c12c4a2b9fee4b5f8f83150cf1a newkey
8b67a7be646918afc7a041119e863be5 newkey_e
13947789d5dcc5322768bd8a2d3f562a newkey.pub
8b67a7be646918afc7a041119e863be5 newkey.pub_e
Mirando las claves extraídas resultantes confirma esto:
$ grep BEGIN newkey_e newkey.pub_e
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----
Buscando en Google un poco, me encontré con este anuncio de un artículo titulado: ¿Cómo convertir archivos de clave privada OpenSSH a SSH ? El sitio parecía estar arriba y abajo, pero al buscar en la memoria caché de Google esta página , encontré la siguiente propaganda:
¿Cómo convertir archivos de clave privada OpenSSH a archivos de clave privada SSH.com?
El programa ssh-keygen no puede hacerlo, aunque la mayoría de las páginas man dicen que sí. Lo desalientan para que use múltiples claves públicas. El único problema es que RCF no le permitirá registrar más de una clave pública.
El artículo continúa cubriendo un método para convertir una clave privada openssh en una clave privada ssh.com mediante el uso de la puttygen
herramienta PuTTY . NOTA: puttygen
se puede ejecutar desde Windows y Linux.
Abra 'puttygen' y genere un par de claves públicas / privadas rsa de 2048 bits. Asegúrese de agregar una contraseña después de que se genera. Guarde la clave pública como "puttystyle.pub" y guarde la clave privada como "puttystyle". El programa de masilla y los programas SSH.com comparten un formato de clave pública común, pero el programa de masilla y OpenSSH tienen diferentes formatos de clave pública. Vamos a volver a esto más adelante. Debería poder cargar ambas claves de masilla en el programa de masilla. Sin embargo, los formatos de clave privada para putty y SSH.com no son los mismos, por lo que deberá crear un archivo convertido. Vaya al menú de conversiones y exporte una clave SSH.com. Guárdelo como "sshstyle". Ahora regrese al menú de conversiones y exporte una tecla openssh. Guárdelo como "openssh". Estos nombres son arbitrarios y puedes elegir el tuyo. Tendrá que cambiar los nombres para la instalación en una máquina OpenSSH, más adelante. Vea abajo.
Dado lo anterior, resolví el siguiente uso puttygen
, utilizando nuestro par de claves openssh privado / público previamente generado:
# generate ssh.com private key from private openssh key
$ puttygen newkey -O private-sshcom -o newkey.puttygen-sshcom
# generate ssh.com public key from private openssh key
$ puttygen newkey -O public -o newkey.pub_puttygen-sshcom
# generate openssh public key from private openssh key (for confirmation)
$ puttygen newkey -O public-openssh -o newkey.pub_puttygen-openssh
Los comentarios son diferentes, por lo que no puede simplemente comparar los archivos resultantes, por lo que si observa las primeras líneas de las teclas, es un buen indicador de que los comandos anteriores fueron exitosos.
Comparación de claves públicas ssh.com:
$ tail -n +3 newkey.pub_e | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb
$ tail -n +3 newkey.pub_puttygen-sshcom | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb
Comparación de las claves públicas de openssh:
$ cut -c 1-100 newkey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY
$ cut -c 1-100 newkey.pub_puttygen-openssh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY
$> a="$(ssh-keygen -e -f ~/.ssh/id_rsa)m"; b="$(ssh-keygen -e -f ~/.ssh/id_rsa.pub)m"; md5sum <<< $a; md5sum <<< $b ce615aa3e39e274d0bd81064399cedf8 - ce615aa3e39e274d0bd81064399cedf8 -
. Los hashes de los archivos originales son diferentes, obviamente. Parece ser que devuelve la clave pública para la clave de entrada privada o pública.ssh-keygen
es devolver las claves públicas. He elaborado un método basado en investigaciones adicionales. LMK si es aceptable.puttygen <OpenSSH_priv_key> -O public -o id_rsa_ssh2_puttygen{.pub}
(-O
significa tipo de salida y archivo de-o
salida ). Eso genera claves públicas y privadas ssh2 a partir de una clave privada rsa de 2048 bits generada por OpenSSH 7.0. No funciona en el cliente Win Phone 7.5 (* El cliente SSH de Tommi Pirttiniemi). Pero gracias a @ ДМИТРИЙМАЛИКОВ y @slm por una excelente respuesta de todos modos. @Otheus puttygen viene con Arch.putty
ssh-keygen
no exportará una clave privada en formato pem, pero convertirá una clave privada openssh existente al formato pem, sobrescribiendo el original. Todo lo que tienes que hacer es editar la contraseña.El comando para convertir su
~/.ssh/id_rsa
archivo del formato OpenSSH al formato SSH2 (pem) es:Luego proporcione la frase de contraseña (antigua) y la nueva en el indicador. Pueden ser lo mismo, o incluso ambos estar en blanco. O puede suministrarlos en la línea de comandos usando las opciones
-P
(frase de contraseña anterior) y-N
(frase de contraseña nueva). Por ejemplo, si la frase de contraseña está en blanco y desea mantenerla así:fuente