¿Cómo hacer ssh de una instancia ec2 a otra?

¿Cómo hacer ssh de una instancia ec2 a otra?

He creado dos instancias EC2 en AWS. Creé un par de claves para cada uno de ellos. Descargué las claves privadas .pem y las convertí al .ppkformato. Puedo conectarme a cada una de mis instancias ec2 usando PuTTY y su clave privada .ppk. Pero, ¿cómo hago SSH desde una de mis instancias ec2 a la otra? Puedo hacer ping al DNS público de cualquiera de ellos desde el otro. Pero si intento ssh de uno a otro, obtengo:

Permiso denegado (clave pública).

Respuesta1

Método 1: utilice las mismas claves en los servidores:

Convierta las claves al formato opensshy cargar las claves privadas a los servidores. Cuando envíe ssh al host de destino, especifique el archivo de clave privada:

ssh -i mykey.pem private.ip.of.other.server

Método 2: crear nuevas claves

En cada servidor ejecute:

ssh-keygen

Presiona enter, ingresa, ingresa. Tendrás dos archivos:

.ssh/id_rsa
.ssh/id_rsa.pub

EnServidor A, cat y copie al portapapeles la clave pública:

cat ~/.ssh/id_rsa.pub
[select and copy to your clipboard]

ssh enServidor By agregue el contenido de eso al archivo autorizado_keys:

cat >> ~/.ssh/authorized_keys
[paste your clipboard contents]
[ctrl+d to exit]

Ahora ssh desde el servidor A:

ssh -i ~/.ssh/id_rsa private.ip.of.other.server

Respuesta2

Hay una tercera y, en mi humilde opinión, la mejor solución, la llamadareenvío de agente ssh:

  • en la máquina local configure ~/.ssh/config, agregando la siguiente sección:
Host <ip-or-name-of-A-server>
  ForwardAgent yes
  • Supongo que en los servidores A y B tienes tu ~/.ssh/id_rsa.pub local agregado al ~/.ssh/authorized_keys del servidor

Mientras trabaja en el servidor A, sus claves se pueden usar en comunicaciones ssh adicionales, por ejemplo:

  • conectarse a otro servidor con un cliente ssh, en este caso al servidor B,
  • scp (copia segura),
  • git: puedes extraer/enviar usando tu identidad local a tus repositorios remotos de git
  • etc.

Para comprobar si esto funciona:

  • conectarse al servidor A
  • verifique si hay una conexión de socket para el intercambio de claves detectando SSH_AUTH_SOCK env var:
set|grep SSH_AUTH_ # output should be something like this:
SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042

Notas:

Respuesta3

Una nueva solución de AWS para el problema.

Conexión de instancia EC2

Aquí hay una publicación de blog sobre lo mismo:

Blog de AWS

Tenga en cuenta:

Las claves públicas SSH solo están disponibles para un uso único durante 60 segundos en los metadatos de la instancia. Para conectarse a la instancia correctamente, debe conectarse mediante SSH dentro de este período de tiempo. Debido a que las claves caducan, no es necesario realizar un seguimiento ni administrarlas directamente, como lo hacía anteriormente.

información relacionada