
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 .ppk
formato. 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:
- você precisa ter o agente ssh em execução - linux:,
ps -e | grep [s]sh-agent
para windows, verifique a página de utilitários do putty e o plink - referência:https://help.github.com/articles/using-ssh-agent-forwarding
- solução de problemas ssh:
https://confluence.atlassian.com/display/BITBUCKET/Troubleshoot+SSH+Issues
Responder3
Uma nova solução AWS para o problema.
Aqui está uma postagem no blog sobre o mesmo:
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.