¿Cómo agrego las claves SSH al archivo authorized_keys?

146

Tengo un servidor Ubuntu en Amazon EC2, que uso para desarrollo, y hoy borré todo de mi archivo ~/.ssh/authorized_keys . Afortunadamente, tengo un SSH abierto, así que todavía estoy conectado y puedo arreglar el archivo, pero cuando trato de volver a guardar mi archivo de clave, no funciona. Todavía obtengo permiso denegado del servidor en mi máquina local.

authorized_keys tiene los permisos 600. He intentado anexar mi clave SSH con ssh-rsa y dejar el ssh-rsa apagado. También intenté hacer que la clave SSH fuera una sola línea, pero tampoco funcionó.

¿Hay algo más que deba hacer para volver a cargar el archivo?

    
pregunta Dave Long 01.06.2011 - 18:02

9 respuestas

170

Debe nunca guardar el archivo con su contenido, comenzando con -----BEGIN RSA PRIVATE KEY----- en el servidor, es decir, su clave privada . En su lugar, debe colocar la clave pública en el archivo ~/.ssh/authorized_keys .

Esta clave pública tiene la extensión .pub cuando se genera utilizando ssh-keygen y su contenido comienza con ssh-rsa AAAAB3 . (El formato binario se describe en las respuestas a esta pregunta ).

Los permisos de ~/.ssh en el servidor deben ser 700. Se supone que el archivo ~/.ssh/authorized_keys (en el servidor) tiene un modo de 600. Los permisos de la clave (privada) en el lado del cliente deben ser 600.

Si la clave privada no estaba protegida con una contraseña y la coloca en el servidor, le recomiendo que genere una nueva:

ssh-keygen -t rsa

Puede omitir esto si está completamente seguro de que nadie puede recuperar la clave privada eliminada del servidor.

Si esto no ayuda, ejecute ssh con opciones para obtener más detalles:

ssh -vvv user@example.com

En el lado del servidor, puede revisar /var/log/auth.log para más detalles.

    
respondido por el Lekensteyn 01.06.2011 - 18:29
146

Una forma alternativa de instalar su clave pública en el% de la máquina remota%:

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Algunas ventajas:

  • no requiere la instalación de authorized_keys .

  • garantiza que ssh-copy-id funciona antes de intentar agregar mkdir a id_rsa.pub .

respondido por el Marius Butuc 27.02.2013 - 20:31
115

Si tiene autenticación basada en el inicio de sesión, utilice ssh-copy-id para agregar sus claves públicas a servidor remoto.

ssh-copy-id user@host
    
respondido por el Shoaib Nawaz 01.06.2011 - 18:32
32
local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit
    
respondido por el jjg 01.06.2011 - 20:23
7

La forma más fácil es copiar y pegar ...

Primero vea / copie el contenido de su clave pública local id_rsa.pub , incluido el comienzo "ssh-rsa" hasta que finalice con su dirección de correo electrónico:

cat ~/.ssh/id_rsa.pub

Luego edite authorized_keys en el servidor y pegue los contenidos de su portapapeles debajo de cualquier otra clave en ese archivo:

nano ~/.ssh/authorized_keys

Y guarde Ctl+O , salga del archivo Ctl+X , salga de la sesión SSH exit e intente iniciar sesión nuevamente para confirmar que funcionó. Si no pidió una contraseña, funcionó.

    
respondido por el ow3n 07.09.2015 - 20:42
3

Después de guardar la clave pública, debe guardar la clave privada en un directorio y archivo en su pc. Y en la sección de autenticación de ssh on putty, debe apuntar al archivo de clave privada que guardó en su escritorio. Funcionará. Funciona para mí.

    
respondido por el user273266 23.04.2014 - 21:59
3

Creo que puedo contribuir a esto, ya que se trata específicamente de instancias de AWS y todas las respuestas solo tratan el problema como un problema de Linux, como si fuera una pieza de hardware. Lo primero que debe entender es que nunca, nunca, debe tratar las instancias de EC2 como hardware. Eso solo creará más trabajo para usted. Trátelo como volátil. Ese es el mayor obstáculo que veo que la gente tiene con AWS. Haga una AMI de su instancia e inserte la clave que necesita en la nueva instancia. cloud-init se encargará de eso por ti. En más detalle, todo lo que tiene que hacer es usar la clave pública correcta al crear la nueva instancia fuera de la AMI del original. Si, como en los comentarios de la respuesta aprobada, desea generar su propio par de claves de archivos pub y pem, AWS le ofrece la opción de cargar sus claves públicas para su uso en EC2.

enlace

    
respondido por el einarc 03.03.2016 - 02:22
1

Obtenga un intérprete de comandos en la máquina remota donde desea colocar la clave y luego puede ejecutar esta línea única para crear los archivos y directorios necesarios, establecer sus permisos y anexar la clave al archivo. Por supuesto, debe cambiar la parte KEYGOESHERE a continuación y el comentario posterior.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys
    
respondido por el Sarel Botha 07.12.2016 - 21:33
1

Aquí hay una variación en la que puede tener una lista de nombres de archivos de claves públicas en un archivo de texto y el gran lote de archivos de claves públicas también está en el mismo directorio.

Esta variación puede ser útil si estuviera dando una gran lista de archivos de claves públicas para importar: -)

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
    
respondido por el jlmontes 23.08.2016 - 19:32

Lea otras preguntas en las etiquetas