Como fazer ssh de uma instância ec2 para outra?

Como fazer ssh de uma instância ec2 para outra?

Criei duas instâncias EC2 na AWS. Criei um par de chaves para cada um deles. Baixei as chaves privadas .pem e as converti no .ppkformato. Posso me conectar a cada uma das minhas instâncias ec2 usando PuTTY e sua chave privada .ppk. Mas como faço o SSH de uma das minhas instâncias ec2 para a outra? Posso executar ping no DNS público de qualquer um deles. Mas se eu tentar ssh de um para outro, recebo:

Permissão negada (chave pública).

Responder1

Método 1 - use as mesmas chaves nos servidores:

Converta as chaves para o formato opensshe carregue as chaves privadas para os servidores. Ao fazer SSH para o host de destino, especifique o arquivo de chave privada:

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

Método 2 – Criar novas chaves

Em cada servidor executado:

ssh-keygen

Pressione Enter, Enter, Enter. Você terá dois arquivos:

.ssh/id_rsa
.ssh/id_rsa.pub

SobreServidor A, cat e copie para a área de transferência a chave pública:

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

ssh emServidor Be anexe o conteúdo dele ao arquivo autorizado_keys:

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

Agora ssh do servidor A:

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

Responder2

Existe uma terceira e IMHO a melhor solução chamadaencaminhamento de agente ssh:

  • na máquina local configure ~/.ssh/config, adicionando a seguinte seção:
Host <ip-or-name-of-A-server>
  ForwardAgent yes
  • Presumo que nos servidores A e B você tenha seu ~/.ssh/id_rsa.pub local adicionado ao ~/.ssh/authorized_keys do servidor

Ao trabalhar no servidor A, suas chaves podem ser usadas em comunicações ssh adicionais - por exemplo:

  • conectando-se a outro servidor com cliente ssh - neste caso, ao servidor B,
  • scp (cópia segura),
  • git - você pode puxar/enviar usando sua identidade local para seus repositórios git remotos
  • etc.

Para verificar se isso funciona:

  • conectar-se ao servidor A
  • verifique se há conexão de soquete para troca de chaves 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:

Responder3

Uma nova solução AWS para o problema.

Conexão de instância EC2

Aqui está uma postagem no blog sobre o mesmo:

Blog da AWS

Observe:

As chaves públicas SSH estão disponíveis apenas para uso único por 60 segundos nos metadados da instância. Para se conectar à instância com êxito, você deve conectar-se usando SSH dentro deste intervalo de tempo. Como as chaves expiram, não há necessidade de rastrear ou gerenciar essas chaves diretamente, como você fez anteriormente.

informação relacionada