Não é possível conectar-se à instância do AWS EC2 - “Falha na verificação da chave do host”

9

Eu configurei uma instância do Ubuntu com um pacote Rails, implantei meu aplicativo e ele está funcionando bem.

Mas quando eu tento fazer o SSH, ele não me permite o login remoto e gera erros como: Host key verification failed .

O problema parece ser persistente. Anexei o Elastic IP a essa instância e não consigo ver o DNS público.

Minha instância está em execução na região de Cingapura.

ssh debug output:

OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 46.137.253.231 [46.137.253.231] port 22.
debug1: Connection established.
debug1: identity file st.pem type -1
debug1: identity file st.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-4ubuntu6
debug1: match: OpenSSH_5.5p1 Debian-4ubuntu6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is.
Please contact your system administrator.
Add correct host key in /home/ubuntu/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/ubuntu/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231
RSA host key for 46.137.253.231 has changed and you have requested strict checking.
Host key verification failed.
    
por Jeevan Dongre 19.12.2011 / 06:53

3 respostas

16

Quando você se conecta a um servidor ssh, seu cliente ssh mantém uma lista de hosts confiáveis como pares de valor-chave de impressão digital do servidor IP e ssh. Com o ec2, você geralmente reutiliza o mesmo IP com várias instâncias do servidor, o que causa conflitos.

Se você se conectou a uma instância ec2 anterior com este IP e agora se conectou a uma nova instância com o mesmo IP, seu computador irá reclamar de "Host verification failed", pois seu par armazenado anteriormente não corresponde mais ao novo par. / p>

A mensagem de erro informa como corrigi-lo:

Offending RSA key in /home/ubuntu/.ssh/known_hosts:1
remove with: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231"

Alternativa simplesmente abra /home/ubuntu/.ssh/known_hosts e exclua a linha 1 (conforme indicado pelo ": 1").

Agora você pode se conectar e receber uma nova verificação de host.

Por favor, note que geralmente o arquivo known_hosts do ssh geralmente armazena um segundo par de linhas para o nome do host ou valor ip6, então você pode precisar remover algumas linhas.

Aviso: a verificação do host é importante e é um bom motivo pelo qual você recebe esse aviso. Certifique-se de que você esteja esperando que a verificação do host falhe. Não remova o par de valores-chave de verificação, se não for o caso.

    
por 20.12.2011 / 12:57
8
A resposta do

@flurdy é boa como uma resolução única.

Mas se você costuma:

  • inicie novas instâncias do EC2,
  • inicie e pare as instâncias do EC2,

.. sem o uso de Elastic IPs (permanentemente conectados aos seus servidores), então você lida com novos / alteração de IPs / nomes de host de suas instâncias o tempo todo .

Nesse caso, você pode querer parar permanentemente o SSH verificando e armazenando impressões digitais do servidor para nomes de host públicos do EC2 .


Para isso, adicione isso ao seu ~/.ssh/config :

# AWS EC2 public hostnames (changing IPs)
Host *.compute.amazonaws.com 
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null


Por favor, note que o SSH ainda vai dizer Warning: Permanently added (...) to the list of known hosts. quando se conectar, mas apenas significa que ele foi adicionado a /dev/null ...

No entanto, o SSH parará de perguntar se você é confirm the authenticity of host e apenas continuará se conectando.

Portanto, é mais conveniente e você pode evitar nem sempre detalha erros de conexão SSH suficientes ao usar suas instâncias do EC2.


Eu tenho que acrescentar que, em teoria, essa configuração reduz a segurança de suas conexões SSH, mas na vida real você provavelmente não veria as impressões digitais de suas instâncias EC2 isoladas de qualquer maneira.

    
por 25.01.2015 / 13:30
0

Como @flurdy disse:

Alternativa simplesmente abra /home/ubuntu/.ssh/known_hosts e exclua a linha 1 (conforme indicado pelo ": 1").

Isso funciona e é muito simples.

    
por 09.07.2017 / 19:02