¿Cómo recupero la clave pública de una clave privada SSH?


444

Una clave privada SSH generada por ssh-keygencontiene una parte de clave pública. ¿Cómo recupero esta clave pública de la clave privada? Perdí mi clave pública y necesito poner el contenido de esta clave pública en el authorized_keysarchivo de servidores y no quiero crear un nuevo par de claves.

Alternativamente redactado: ¿cómo creo el id_rsa.pubarchivo a partir de un id_rsaarchivo?


pbcopy > ~/.ssh/id_rsa.pub¡Uy!
— Nick T

@NickT: pbcopy es un comando de MacOSX. Además, es inútil si ha reiniciado, desconectado o copiado cualquier otra cosa en el portapapeles.
— jsnfwlr

Respuestas:


681

He encontrado la respuesta en Error del servidor: ¿ Crear una clave SSH pública a partir de la clave privada?

La opción -ygenera la clave pública:

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

Como nota al margen, se pierde el comentario de la clave pública. He tenido un sitio que requería el comentario (¿Launchpad?), Por lo que debe editar ~/.ssh/id_rsa.puby agregar un comentario a la primera línea con un espacio entre el comentario y los datos clave. A continuación se muestra un ejemplo de clave pública truncada.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

Para las claves que se agregaron al Agente SSH (un programa que se ejecuta en segundo plano y evita la necesidad de volver a ingresar la frase de contraseña del archivo de claves una y otra vez), puede usar el ssh-add -Lcomando para enumerar las claves públicas de las claves que se agregaron a El agente (vía ssh-add -l). Esto es útil cuando la clave SSH se almacena en una tarjeta inteligente (y no es posible acceder al archivo de clave privada).


1
Tenga en cuenta que su archivo de clave privada ~/.ssh/id_rsadebe estar restringido a su nombre de usuario. use $ sudo chmod 600 ~/.ssh/id_rsae ingrese sus credenciales raíz para restringirlo, luego puede generar el archivo de clave pública. De lo contrario, recibirá una advertencia de archivo de clave privada sin restricciones.
— Mark Mikofski el

12
@ MarkMikofski No es necesario sudo, se supone que ya tienes la clave privada. De lo contrario, no puede leerlo en primer lugar.
— Lekensteyn

77
@Lekensteyn gracias, ¡por supuesto que tienes razón! También 400se recomienda ya que no es necesario escribir para escribir el archivo de clave privada. El comando corregido debe ser$ chmod 400 ~/.ssh/id_rsa
— Mark Mikofski, el

Se pierde el comentario de clave privada. Ver stackoverflow.com/questions/38290929/…
— weberjn

1
@weberjn La clave privada ( id_rsaarchivo) no tiene un comentario, pero de hecho el comentario dentro del archivo de clave pública ( id_rsa.pub) se pierde.
— Lekensteyn

14

Esta es una solución específica para usuarios que usan Windows para SSH en sus máquinas remotas, incluidas imágenes en la nube en Amazon AWS y GCE.

(Descargo de responsabilidad)

Recientemente utilicé esta solución para iniciar sesión de forma remota en nuevas imágenes de VM implementadas en GCE.


Herramientas utilizadas:

  1. puttygen
  2. WinSCP

Pasos a realizar:

  1. Genere un par de claves pública / privada usando puttygen.
  2. Cargue una clave pública en su servidor en la nube o en una ubicación remota.

Descripción (cómo hacerlo):

  1. Genere una clave / par o use una clave privada existente:

    Si tienes una clave privada:

    Abra puttygen, presione el botón de carga y seleccione su archivo de clave privada (* .pem).

    Si no tiene una clave privada:

    • Puttygen abierto,
    • Seleccione el tipo de clave SSH2 DSA deseado (puede usar RSA o DSA) dentro de la sección Parámetros ... y es importante que deje el campo de frase de contraseña en blanco,
    • Presione generar y siga las instrucciones para generar un par de claves (públicas / privadas).

    Foto de ejemplo de generación de claves

  2. Cree un nuevo archivo 'autorizado_keys' (con el Bloc de notas):

    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".

    Asegúrese de que solo haya una línea de texto en este archivo.

  3. Suba la clave a un servidor Linux:

    • Abra WinSCP
    • Seleccione el protocolo de archivo SFTP e inicie sesión con sus credenciales SSH.
    • Si tiene éxito, verá la estructura del directorio de inicio en su máquina remota.

    Cargue el archivo Authorized_keys al directorio de inicio en la máquina remota.

  4. Establecer permisos adecuados:

    Hacer un .sshdirectorio (si no existe)

    Copie el authorized_keysarchivo en el directorio .ssh (esto reemplazará cualquier authorized_keysarchivo existente ; tome nota de esto).

    Si el archivo existe, simplemente agregue el contenido de este archivo al archivo existente.

    Ejecute comandos para establecer permisos:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Ahora podrá ingresar a una máquina remota sin ingresar credenciales cada vez.

Otras lecturas:

  1. Generando y cargando claves SSH en Windows

  2. Autenticación sin contraseña utilizando OpenSSH Key, certificados .pem y .pub


Si su directorio de inicio está encriptado, haga esto: askubuntu.com/questions/439184/…
— devprashant

2
Aunque su respuesta no es realmente relevante para la pregunta, la voto por su entusiasmo.
— Truong Nguyen
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.