Tengo un servidor Ubuntu en Amazon EC2, que uso para el desarrollo, y hoy borré estúpidamente todo de mi ~/.ssh/authorized_keys
archivo. Afortunadamente, tengo un SSH abierto, así que todavía estoy conectado y puedo arreglar el archivo, pero cuando intento volver a colocar mi archivo de clave, no funciona. Todavía recibo el 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 la ssh-rsa desactivada. También intenté hacer que la clave SSH fuera una sola línea, pero tampoco funcionó.
¿Hay algo más que deba hacer, como volver a cargar el archivo?
data-recovery
ssh
amazon-ec2
Dave Long
fuente
fuente
Respuestas:
Usted debe nunca se guarde el archivo con su contenido a partir de
-----BEGIN RSA PRIVATE KEY-----
en el servidor, que es su privado clave. En su lugar, debe poner la clave pública en el~/.ssh/authorized_keys
archivo.Esta clave pública tiene la
.pub
extensión cuando se genera usandossh-keygen
y su contenido comienza conssh-rsa AAAAB3
. (El formato binario se describe en las respuestas a esta pregunta ).Los permisos de
~/.ssh
en el servidor deben ser 700. Se~/.ssh/authorized_keys
supone que el archivo (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 puso en el servidor, le recomiendo que genere una nueva:
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 verbosidad:En el lado del servidor, puede revisar
/var/log/auth.log
para obtener más detalles.fuente
ssh-keygen -t rsa
y poner elid_rsa.pub
archivo recién creado en~/.ssh/authorized_keys
su servidor. Ver también docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…ssh-keygen -y -f key.pem > key.pub
Una forma alternativa de instalar su clave pública en la máquina remota
authorized_keys
:Algunas ventajas:
No requiere
ssh-copy-id
ser instalado.garantiza que
mkdir
funciona antes de intentar adjuntarid_rsa.pub
aauthorized_keys
.fuente
mkdir -p ~/.ssh
parte de la respuesta dada por @MariusButucumask 077 && mkdir -p ~/.ssh
es todo lo que necesita hacer para asegurarse de que funcione correctamente.Si tiene autenticación basada en inicio de sesión,
ssh-copy-id
úsela para agregar sus claves públicas al servidor remoto.fuente
brew install ssh-copy-id
sudo port install openssh +ssh_copy_id
. Las+ssh_copy_id
instalaciones se abren con la variante ssh_copy_id.fuente
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 termine con su dirección de correo electrónico:Luego edite
authorized_keys
en el servidor y pegue el contenido de su portapapeles debajo de cualquier otra clave en ese archivo:Y guarde
Ctl+O
, salga del archivoCtl+X
, salga de la sesión SSHexit
e intente iniciar sesión nuevamente para confirmar que funcionó. Si no solicitó una contraseña, funcionó.fuente
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 de EC2 como hardware. Eso solo creará más trabajo para usted. Trátelos como volátiles. Ese es el mayor obstáculo que veo que la gente tiene con AWS. Haga un AMI de su instancia e inyecte la clave que necesita en la nueva instancia. cloud-init se encargará de ti. Con más detalle, todo lo que tiene que hacer es usar la clave pública correcta al crear la nueva instancia a partir 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 usar 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
fuente
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 masilla, debe apuntar al archivo de clave privada que guardó en su escritorio. Funcionará. Esto funciona para mi.
fuente
Obtenga un shell en la máquina remota donde desea colocar la clave y luego puede ejecutar esta línea para crear los archivos y directorios necesarios, establecer sus permisos y agregar la clave al archivo. Por supuesto, debe cambiar la
KEYGOESHERE
parte a continuación y el comentario después.fuente
Aquí hay una variación por la cual puede tener una lista de nombres de archivos de clave pública en un archivo de texto y el gran lote de archivos de clave pública también están en el mismo directorio.
Esta variación puede ser útil si proporciona una gran lista de archivos de clave pública para importar :-)
fuente