No se puede conectar a la instancia de AWS EC2: "Error de verificación de clave de host"

13

Había configurado una instancia de Ubuntu con un paquete Rails, implementé mi aplicación y está funcionando bien.

Pero cuando intento hacer SSH, no soy yo lo que permite la conexión remota y arroja errores como: Host key verification failed.

El problema parece ser persistente. He adjuntado la IP elástica a esa instancia y no puedo ver el DNS público.

Mi instancia se está ejecutando en la región de Singapur.

ssh salida de depuración:

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
fuente
Tiene que decirnos los errores reales exactos que recibió. Decirnos cómo fue uno de los errores no es útil.
David Schwartz

Respuestas:

19

Cuando se conecta a un servidor ssh, su cliente ssh mantiene una lista de hosts de confianza como pares clave-valor de IP y huella digital del servidor ssh. Con ec2, a menudo reutiliza la misma IP con varias instancias de servidor, lo que causa conflictos.

Si se ha conectado a una instancia ec2 anterior con esta IP y ahora se conecta a una nueva instancia con la misma IP, su computadora se quejará de "Error de verificación del host" ya que su par almacenado anteriormente ya no coincide con el nuevo par.

El mensaje de error te dice cómo solucionarlo:

Clave RSA ofensiva en /home/ubuntu/.ssh/known_hosts:1
eliminar con: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

Alternativa simplemente abra /home/ubuntu/.ssh/known_hosts y elimine la línea 1 (como lo indica ": 1").

Ahora puede conectarse y recibir una nueva verificación de host.

Tenga en cuenta que, por lo general, el archivo known_hosts de ssh generalmente ha almacenado un segundo par de líneas para el nombre de host o el valor de ip6, por lo que es posible que deba eliminar un par de líneas.

Advertencia: la verificación del host es importante y es una buena razón por la que recibe esta advertencia. Asegúrese de esperar que la verificación del host falle. No elimine el par clave-valor de verificación si no está seguro.

flurdy
fuente
Yo lo hice. Ahora recibo este error: Permiso denegado (clave pública). Alguna idea de cómo resolver esto, porque el archivo de clave pública fue lo suficientemente bueno la última vez que accedí a mi servidor AWS.
Najeeb
11

La respuesta de @flurdy es buena como una resolución única.

Pero si a menudo:

  • lanzar nuevas instancias de EC2,
  • iniciar y detener instancias EC2,

..sin usar IP elásticas (permanentemente conectadas a sus servidores), entonces se ocupa de IP / nombres de host nuevos / cambiantes de sus instancias todo el tiempo .

Si es así, es posible que desee detener permanentemente la comprobación de SSH y el almacenamiento de huellas digitales del servidor para nombres de host públicos EC2 .


Para hacer eso solo agregue esto a su ~/.ssh/config:

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


Tenga en cuenta que SSH seguirá diciendo Warning: Permanently added (...) to the list of known hosts.cuando se conecte, pero solo significa que lo ha agregado a /dev/null...

Sin embargo, SSH dejará de preguntarle confirm the authenticity of hosty continuará conectándose.

Por lo tanto, es más conveniente y puede evitar que no siempre se produzcan errores de conexión SSH lo suficientemente detallados al usar sus instancias EC2.


Debo agregar que, en teoría, esta configuración reduce la seguridad de sus conexiones SSH, pero en la vida real probablemente no verifique las huellas digitales de sus instancias únicas de EC2 de todos modos.

Greg Dubicki
fuente