Impossible de se connecter à l'instance AWS EC2 - «Échec de la vérification de la clé d'hôte»

13

J'avais configuré une instance Ubuntu avec un package Rails, déployé mon application et cela fonctionne bien.

Mais lorsque je tente de faire SSH, il ne me permettant la connexion à distance et renvoie des erreurs comme: Host key verification failed.

Le problème semble persister. J'ai attaché l'IP élastique à cette instance et je ne peux pas voir le DNS public.

Mon instance fonctionne dans la région de Singapour.

ssh sortie de débogage:

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.
Jeevan Dongre
la source
Vous devez nous dire les erreurs réelles que vous avez obtenues. Nous dire à quoi ressemblait l'une des erreurs n'est pas utile.
David Schwartz

Réponses:

19

Lorsque vous vous connectez à un serveur ssh, votre client ssh conserve une liste des hôtes de confiance sous forme de paires clé-valeur d'empreinte digitale IP et du serveur ssh. Avec ec2, vous réutilisez souvent la même IP avec plusieurs instances de serveur, ce qui provoque des conflits.

Si vous vous êtes connecté à une instance ec2 antérieure avec cette IP et que vous vous connectez maintenant à une nouvelle instance avec la même IP, votre ordinateur se plaindra de la "vérification de l'hôte a échoué" car sa paire précédemment stockée ne correspond plus à la nouvelle paire.

Le message d'erreur vous indique comment y remédier:

Clé RSA incriminée dans /home/ubuntu/.ssh/known_hosts:1
supprimer avec: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

Alternative, ouvrez simplement /home/ubuntu/.ssh/known_hosts et supprimez la ligne 1 (comme indiqué par le ": 1").

Vous pouvez maintenant vous connecter et recevoir une nouvelle vérification d'hôte.

Veuillez noter généralement que le fichier connu_hosts de ssh a généralement stocké une deuxième paire de lignes pour le nom d'hôte ou la valeur ip6, vous devrez donc peut-être supprimer quelques lignes.

Avertissement: la vérification de l'hôte est importante et c'est une bonne raison pour laquelle vous obtenez cet avertissement. Assurez-vous que vous attendez l'échec de la vérification de l'hôte. Ne supprimez pas la paire clé-valeur de vérification si vous n'êtes pas certain.

affairé
la source
Je l'ai fait. Maintenant, je reçois cette erreur: autorisation refusée (publickey). Toute idée de la façon de résoudre ce problème, car le fichier de clé publique était suffisamment bon la dernière fois que j'ai accédé à mon serveur AWS.
Najeeb
11

La réponse de @flurdy est bonne comme une résolution unique.

Mais si vous souvent:

  • lancer de nouvelles instances EC2,
  • démarrer et arrêter des instances EC2,

..without en utilisant les adresses IP élastiques (attachés en permanence à vos serveurs), vous traitez avec de nouvelles / changer les adresses IP / hostname de vos instances tout le temps .

Si c'est le cas, vous pouvez arrêter définitivement la vérification SSH et le stockage des empreintes digitales du serveur pour les noms d'hôte publics EC2 .


Pour ce faire, ajoutez simplement ceci à votre ~/.ssh/config:

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


Veuillez noter que SSH dira toujours Warning: Permanently added (...) to the list of known hosts.lors de la connexion, mais signifie simplement qu'il l'a ajouté à /dev/null...

SSH cessera cependant de vous demander confirm the authenticity of hostet continuera simplement à se connecter.

C'est donc plus pratique et vous pouvez éviter de ne pas toujours expliquer suffisamment les erreurs de connexion SSH lors de l'utilisation de vos instances EC2.


Je dois ajouter qu'en théorie, ce paramètre réduit la sécurité de vos connexions SSH, mais dans la vraie vie, vous ne vérifieriez probablement pas les empreintes digitales de vos instances EC2 uniques de toute façon.

Greg Dubicki
la source