¿Hay alguna forma de convertir un par de claves OpenSSH existentes en el par de claves SSH2 (formato ssh.com)?
UPD :ya que hay algunas respuestas sobre ssh-keygen
apareció de repente, explicaré de dónde vengo (también será una buena respuesta sobre "¿qué has probado?").
$> diff --report-identical-files <(ssh-keygen -e -f ~/.ssh/id_dsa) <(ssh-keygen -e -f ~/.ssh/id_dsa.pub)
Files /tmp/zshAGGWAK and /tmp/zshPZiIr6 are identical
En otras palabras, ssh-keygen
devuelve las mismas claves para las claves de entrada públicas y privadas (los valores hash de los archivos originales son obviamente diferentes, los he comprobado dos veces para asegurarme de que son claves públicas y privadas válidas). Parece ser que ssh-keygen
genera solo clave pública para clave de entrada privada o pública.
¿Lo estoy haciendo mal o es un comportamiento normal?
Respuesta aceptada:
Este tutorial titulado:SSH:convertir OpenSSH a SSH2 y viceversa parece ofrecer lo que está buscando.
Convertir 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 en 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 mostrando cómo generar los distintos tipos de claves y cómo exportarlas a otros formatos.
¿Usar esto para claves privadas y públicas?
De acuerdo con la página del manual, la respuesta sería un sí. Mirando la página del manual para ssh-keygen
establece lo siguiente para el -e
cambiar:
-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 se pueden 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
Mirar 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 esta propaganda de un artículo titulado:¿Cómo convertir archivos de clave privada de OpenSSH a SSH? El sitio parecía tener altibajos, pero al buscar esta página en el caché de Google, encontré la siguiente propaganda:
¿Cómo se convierten los archivos de clave privada de OpenSSH en archivos de clave privada de SSH.com?
No se puede hacer con el programa ssh-keygen aunque la mayoría de las páginas man
dicen que sí. Lo desaconsejan 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 de openssh en una clave privada de ssh.com mediante el uso de puttygen
de PuTTY. herramienta. puttygen
se puede ejecutar desde Windows y Linux.
Abra 'puttygen' y genere un par de claves pública/privada rsa de 2048 bits.
Asegúrese de agregar una contraseña después de generarla. Guarde la clave pública
como "puttystyle.pub" y guarde la clave privada como "puttystyle". El
programa Putty y los programas SSH.com comparten un formato de clave pública común
pero el programa Putty y OpenSSH tienen diferentes formatos de clave pública.
Volveremos a esto más adelante. Debería poder cargar ambas teclas
puttystyle en el programa PuTTY. Sin embargo, los formatos de clave privada
para PuTTY y SSH.com no son los mismos, por lo que tendrá que
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 clave openssh. Guárdelo como "openssh". Estos nombres
son arbitrarios y puede elegir los suyos propios. Tendrá que cambiar
los nombres para la instalación en una máquina OpenSSH más adelante. Ver más abajo.
Dado lo anterior, resolví lo siguiente usando puttygen
, utilizando nuestro par de claves opensh privadas/públicas generadas anteriormente:
# 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 indicador bastante bueno de que los comandos anteriores fueron exitosos.
Relacionado:Ubuntu:¿cómo configurar direcciones IP externas para invitados LXC?Comparación de claves públicas de 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 claves opensh públicas:
$ cut -c 1-100 newkey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY
$ cut -c 1-100 newkey.pub_puttygen-openssh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY