GNU/Linux >> Tutoriales Linux >  >> Linux

¿Convertir clave privada Openssh en clave privada Ssh2?

¿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. NOTA: 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

Linux
  1. ¿Cómo convertir un archivo PPK a claves OpenSSH e iniciar sesión usando SSH en Linux?

  2. ¿Convertir un enlace duro en un enlace simbólico?

  3. ¿Cómo reenviar una clave Ssh ya reenviada a Tmux?

  4. ¿Compartir claves privadas entre máquinas?

  5. Guía completa para la configuración de autenticación basada en clave SSH2

Convierta su instalación de Windows en una VM en Linux

Cómo convertir imágenes a formato ASCII en Linux

Cómo configurar la clave pública y privada SSH en Linux

Inicie sesión con una clave privada SSH en Linux y macOS

Cómo convertir la clave privada de PuTTY (.ppk) en clave SSH

SSH de A a B a C, usando clave privada en B