Impossibile connettersi all'istanza di AWS EC2 - "Verifica chiave host non riuscita"


13

Avevo configurato un'istanza di Ubuntu con un pacchetto Rails, distribuito la mia app e funziona perfettamente.

Ma quando cerco di fare SSH, non è che mi permette per l'accesso remoto e getta errori come: Host key verification failed.

Il problema sembra persistente. Ho collegato l'IP elastico a quell'istanza e non riesco a vedere il DNS pubblico.

La mia istanza è in esecuzione nella regione di Singapore.

ssh uscita di debug:

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.

Devi dirci gli errori effettivi che hai riscontrato. Dirci come è stato uno degli errori non è utile.
David Schwartz,

Risposte:


19

Quando ci si connette a un server SSH, il client SSH mantiene un elenco di host attendibili come coppie chiave-valore di impronte digitali del server IP e SSH. Con ec2 riutilizzi spesso lo stesso IP con diverse istanze del server che causano conflitti.

Se ti sei connesso a una precedente istanza ec2 con questo IP e ora ti connetti a una nuova istanza con lo stesso IP il tuo computer si lamenterà di "Verifica dell'host non riuscita" poiché la sua coppia precedentemente memorizzata non corrisponde più alla nuova coppia.

Il messaggio di errore indica come risolverlo:

Chiave RSA offensiva in /home/ubuntu/.ssh/known_hosts:1
rimuovi con: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

Alternativa è sufficiente aprire /home/ubuntu/.ssh/known_hosts ed eliminare la riga 1 (come indicato da ": 1").

Ora puoi connetterti e ricevere una nuova verifica dell'host.

Si noti che di solito il file known_hosts di ssh di solito ha memorizzato una seconda coppia di righe per nome host o valore ip6, quindi potrebbe essere necessario rimuovere un paio di righe.

Avviso: la verifica dell'host è importante ed è un buon motivo per ricevere questo avviso. Assicurati di aspettarti che la verifica dell'host fallisca. Non rimuovere la coppia chiave-valore di verifica se non si è certi.


L'ho fatto. Ora ricevo questo errore: autorizzazione negata (chiave pubblica). Qualche idea su come risolverlo, perché il file della chiave pubblica è stato abbastanza buono l'ultima volta che ho effettuato l'accesso al mio server AWS.
Najeeb,

11

La risposta di @flurdy è buona come risoluzione una tantum.

Ma se spesso:

  • avviare nuove istanze EC2,
  • avviare e arrestare istanze EC2,

..without con IPS elastico (permanentemente collegati ai server), allora avete a che fare con il nuovo / modifica IP / nomi host di istanze per tutto il tempo .

In tal caso, è possibile interrompere definitivamente il controllo SSH e la memorizzazione delle impronte digitali del server per i nomi host pubblici EC2 .


Per farlo basta aggiungere questo al tuo ~/.ssh/config:

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


Si noti che SSH continuerà a dire Warning: Permanently added (...) to the list of known hosts.durante la connessione, ma significa solo che lo ha aggiunto a /dev/null...

SSH smetterà comunque di chiedere se confirm the authenticity of hostcontinui a connetterti.

Quindi è più conveniente e potresti evitare non sempre errori di connessione SSH abbastanza dettagliati durante l'utilizzo delle tue istanze EC2.


Devo aggiungere che in teoria questa impostazione riduce la sicurezza delle tue connessioni SSH ma nella vita reale probabilmente non controlleresti comunque le impronte digitali delle tue istanze EC2 una tantum.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.