Como ssh de uma instância ec2 para outra?

1

Eu criei duas instâncias do EC2 na AWS. Eu criei um par de chaves para cada um deles. Eu baixei as chaves privadas .pem e as converti em .ppk format. Eu posso conectar-me a cada uma das minhas instâncias do ec2 usando o PuTTY e sua chave privada .ppk. Mas como faço para o SSH de uma das minhas instâncias ec2 para a outra? Eu posso pingar o DNS público de qualquer um deles do outro. Mas se eu tentar ssh de um para o outro, fico:

Permission denied (publickey).

    
por Stephen Walsh 17.10.2016 / 13:03

2 respostas

4

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

Converter as chaves para o formato openssh e carregue as chaves privadas para os servidores. Quando você 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. Você terá dois arquivos:

.ssh/id_rsa
.ssh/id_rsa.pub

Em Servidor A , cole e copie para a área de transferência a chave pública:

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

ssh no Servidor B , e acrescente o conteúdo ao arquivo authorized_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
    
por 24.11.2016 / 04:59
3

Existe uma 3ª e IMHO como a melhor solução chamada encaminhamento de agente ssh :

  • na configuração da máquina local ~ / .ssh / config, adicionando a seguinte seção:
Host <ip-or-name-of-A-server>
  ForwardAgent yes
  • Eu assumo que no servidor A e B você tem seu ~ / .ssh / id_rsa.pub local adicionado ao servidor ~ / .ssh / authorized_keys

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

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

Para verificar se isso funciona:

  • conecte-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:

  • você precisa ter o agente ssh em execução - linux: ps -e | grep [s]sh-agent , para windows, verifique os utilitários do putty pagent e plink
  • referência : link
  • solução de problemas ssh: link
por 25.07.2017 / 16:41