¿Cómo agrego claves SSH al archivo authorized_keys?

Tengo un servidor Ubuntu en Amazon EC2, que uso para el desarrollo, y hoy estúpidamente borré todo de mi ~/.ssh/authorized_keys file. Afortunadamente tengo un SSH abierto, por lo que todavía estoy conectado y puedo arreglar el archivo, pero cuando intento volver a colocar mi archivo de claves, no funciona. Sigo recibiendo permiso denegado del servidor en mi máquina local.

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

¿Hay algo más que tenga que hacer, como volver a cargar el archivo de alguna manera?

Deberías nunca guarde el archivo con su contenido comenzando con -----BEGIN RSA PRIVATE KEY----- en el servidor, esa es su privado clave. En su lugar, debe poner el publico llave en el ~/.ssh/authorized_keys file.

Este publico la llave tiene el .pub extensión cuando se genera usando 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 debe ser 700. Archivo ~/.ssh/authorized_keys (en el servidor) se supone que 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 colocas en el servidor, te recomiendo que generes 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 más detalles:

ssh -vvv user@example.com

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

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

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

Algunas ventajas:

  • no requiere ssh-copy-id para ser instalado.

  • garantiza que mkdir funciona antes de intentar anexar id_rsa.pub a authorized_keys.

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

ssh-copy-id user@host
local> scp .ssh/id_rsa.pub remote.com:
local> ssh remote.com
remote> cat id_rsa.pub >> .ssh/authorized_keys
remote> rm id_rsa.pub
remote> exit

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

Primero vea / copie el contenido de su clave pública local id_rsa.pub incluye el principio "ssh-rsa" hasta que termine con tu dirección de correo electrónico:

cat ~/.ssh/id_rsa.pub

A continuación, edite authorized_keys en el servidor y pegue el contenido de su portapapeles debajo de cualquier otra clave en ese archivo:

nano ~/.ssh/authorized_keys

Y ahorra Ctl+O, salir del archivo Ctl+X, salir de la sesión SSH exit y vuelva a iniciar sesión para confirmar que funcionó. Si no pedía una contraseña, funcionaba.

Obtenga un shell 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 agregar la clave al archivo. Por supuesto que tienes que cambiar el KEYGOESHERE la parte de abajo y el comentario después de ella.

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

Pensé que podía 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 comprender es que nunca, nunca, no debe tratar las instancias EC2 como hardware. Eso solo creará más trabajo para que los trates como volátiles. Ese es el mayor obstáculo que veo que la gente tiene con AWS.Cree una AMI de su instancia e inyecte la clave que necesita en la nueva instancia. cloud-init se encargará de ello por you.In más detalles todo lo que tiene que hacer es usar la clave pública correcta al crear la nueva instancia a partir de la AMI de la 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 usarlas en EC2.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws

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 en putty, debe apuntar al archivo de clave privada que guardó en su escritorio. Funcionará. Funciona para mí.

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

Esta variación puede ser útil si estaba dando una gran lista de archivos de clave pública para importar: -)

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done

Años más tarde, esto - todavía-parece relevante y activo; solo quería hacer una observación, hablar de haber esquivado una bala: "Por suerte tengo un SSH abierto, así que todavía estoy conectado […] "- sheesh! ; dP

Esta publicación, que fue editada en mi cumpleaños, me salvó hace dos meses en mi cumpleaños.