
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 .ppk
formato. 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:
- necesita tener el agente ssh ejecutándose - linux:,
ps -e | grep [s]sh-agent
para Windows consulte la página de utilidades de PuTTY y plink - referencia:https://help.github.com/articles/using-ssh-agent-forwarding
- solución de problemas de ssh:
https://confluence.atlassian.com/display/BITBUCKET/Troubleshoot+SSH+Issues
Respuesta3
Una nueva solución de AWS para el problema.
Aquí hay una publicación de blog sobre lo mismo:
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.