¿Cómo SSH a EC2 sin usar explícitamente la tecla pem?

21

Tengo Windows como mi sistema operativo principal. Con el reproductor VMware, configuro un servidor Ubuntu 12.4 como máquina invitada. El servidor Ubuntu tiene un usuario "ubuntu".

Creé una nueva instancia EC2 + clave de configuración pem. Desde la máquina de Windows, cuando uso la tecla putty + pem, puedo ssh.

Agregué la clave pem a mi servidor VMware Ubuntu (/home/ubuntu/.ssh/) Además, establecí los siguientes permisos: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

A través del servidor de Ubuntu - Traté de SSH a la instancia EC2 sin éxito: ssh ubuntu@EC2_IP Permission denied (publickey) . Si utilizo explícitamente la tecla pem, funciona: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Tenga en cuenta que debo usar la ruta directa a la clave, de lo contrario, obtendré Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

Por favor avise. ¡Gracias!

usuario798562
fuente

Respuestas:

18

Por defecto, el cliente SSH buscará nombres de clave id_rsa, id_dsay id_ecdsaen ~/.ssh/. Si su clave no se llama así, debe especificarla en la línea de comando -icomo lo ha estado haciendo, o especificarla en la configuración del cliente.

Puede agregar algo como esto para ~/.ssh/configseleccionar automáticamente esta clave cuando SSHing a EC2:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
mgorven
fuente
2

¿Cómo nombras tu clave privada? Debe tener el nombre de archivo id_rsa predeterminado (cambie el nombre del archivo pem a /home/ubuntu/.ssh/id_rsa)

Andrei Mikhaltsov
fuente
se llama eldad.pem (nombre predeterminado de AWS). Lo renombré a id_rsa y funcionó. ¿Hay alguna manera de mantenerlo en el nombre actual y aún usarlo?
user798562
Sí, Daniel ya escribió sobre eso en su respuesta :)
Andrei Mikhaltsov
1

Puede usar ssh-agenty ssh-addpara evitar tener que especificar la clave privada explícitamente.

Puede poner los comandos en su .profileo .bashrcasí se ejecutan cada vez que inicie sesión. Puede encontrar un script de inicio de ejemplo en la parte inferior de esta publicación .

David Levesque
fuente
Lo hice, pero cuando reinicio, necesito volver a hacerlo. ¿Alguna forma de evitar eso?
user798562
Edité mi respuesta para incluir eso.
David Levesque
0

El cliente ssh busca identify filesegún la configuración establecida en /etc/ssh/ssh_config. Entonces puede especificar el archivo de identidad allí, y recuerde que puede tener múltiples archivos de identidad listados en el archivo de configuración del cliente ssh. Desde la página de manual de ssh:

    -i identity_file
         Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/identity
         for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2.  Identity files may also
         be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options (and multiple identiâ
         ties specified in configuration files).

Para la clave RSA, por ejemplo, la ubicación predeterminada es ~ / .ssh / id_rsa. Como Andrei Mikhaltsov sugirió, puede colocar su clave privada en / home / ubuntu / ssh / id_rsa y podrá conectarse sin especificarlo en la línea de comandos. Si ese nombre de archivo ya existe y contiene otra clave privada, aún puede personalizar su archivo de configuración de cliente ssh en el IdentityFileparámetro.

Daniel t.
fuente