¿Crear una clave SSH pública a partir de la clave privada?


215

Supongamos que tengo una clave SSH, pero he eliminado la parte de clave pública. Tengo la parte de la clave privada. ¿Hay alguna forma de regenerar la parte de clave pública?

Respuestas:


253

Use la opción -y para ssh-keygen:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

Del 'hombre ssh-keygen'

 -y      This option will read a private OpenSSH format file and print an
         OpenSSH public key to stdout.

Especifique la clave privada con la opción -f, la suya podría ser dsa en lugar de rsa. El nombre de su clave privada probablemente contiene el que utilizó. La clave pública recién generada debe ser la misma que generó antes.


77
¿Por qué el "-t dsa"? Mayge la clave del OP es rsa? Me desharía de -t y en su lugar usaba -f.
innaM

1
Buen punto, actualizado en consecuencia
Kyle Brandt

Sí, el mío originalmente era RSA.
Rory

1
En Mac OSX 10.9.3 Mavericks obtengo un "error de carga" después de ejecutar el comando. ¿Cómo puedo solucionar esto?
Hyperfocus

Creo que podría dar un paso más con el parámetro -N en caso de que la clave privada esté protegida con contraseña:ssh-keygen -f ~/.ssh/id_rsa -y -N "$PASSWORD" > ~/.ssh/id_rsa.pub
ken

6

La solución es específicamente para usuarios que usan Windows

Herramienta utilizada:

  • Puttygen (generador de claves PuTTY)
  • WinSCP

Pasos a realizar:

  1. Abra el generador de claves PuTTY.
  2. Cargue su clave privada ( *.ppkarchivo).
  3. Copie sus datos de clave pública de la sección "Clave pública para pegar en el archivo OpenSSH Authorized Keys" del generador de claves PuTTY y pegue los datos clave en el archivo "Authorized Keys" (usando el bloc de notas) si desea usarlos.

Instantánea que muestra porciones de Puttygen para enfocar:

Instantánea que muestra porciones de Puttygen para enfocar



Puttygen también puede 'importar' OpenSSH (realmente OpenSSL-legacy) y las claves privadas de formato SSHCOM. Y aunque se originó en Windows, también se ha portado a Unix, y la versión de Unix puttygenes un programa de línea de comandos (no GUI); ver, por ejemplo, linux.die.net/man/1/puttygen
dave_thompson_085
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.