Cómo corregir: “ADVERTENCIA: LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO” en Mac y Linux

C

SSH, o Secure Shell, es una forma muy común de acceder de forma segura a máquinas remotas, generalmente a través de la línea de comandos. Su objetivo es garantizar que su conexión y, por lo tanto, todos los datos transmitidos, estén libres de escuchas. Debido a esto, hay bastantes comprobaciones integradas en los clientes SSH populares, como OpenSSH, que aseguran que su conexión no se vea comprometida.

Un ejemplo de una de estas comprobaciones es la siguiente, que identifica cuándo ha cambiado la huella digital de un servidor:

$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:hotsxb/qVi1/ycUU2wXF6mfGH++Yk7WYZv0r+tIhg4I.
Please contact your system administrator.
Add correct host key in /Users/scott/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/scott/.ssh/known_hosts:47
ECDSA host key for ec2-192-168-1-1.compute-1.amazonaws.com has changed and you have requested strict checking.
Host key verification failed.

Cuando se conecta a un servidor a través de SSH, obtiene una huella digital para el ECDSA clave, que luego guarda en su directorio de inicio bajo ~/.ssh/known_hosts. Esto se hace después de conectarse por primera vez al servidor y le mostrará un mensaje como este:

$ ssh [email protected]
The authenticity of host 'ec2-192-168-1-1.compute-1.amazonaws.com (192.168.1.1)' can't be established.
ECDSA key fingerprint is SHA256:hotsxb/qVi1/ycUU2wXF6mfGH++Yk7WYZv0r+tIhg4I.
Are you sure you want to continue connecting (yes/no)? 

Si ingresa ‘sí’, la huella digital se guarda en el known_hosts , que SSH luego consulta cada vez que se conecta a ese servidor.

Pero, ¿qué sucede si la clave ECDSA de un servidor ha cambiado desde la última vez que se conectó a él? Esto es alarmante porque en realidad podría significar que se está conectando a un servidor diferente sin saberlo. Si este nuevo servidor es malicioso, entonces podrá ver todos los datos enviados hacia y desde su conexión, que podrían ser utilizados por quien haya configurado el servidor. Esto se llama ataque man-in-the-middle. Este escenario es exactamente lo que la “ADVERTENCIA: ¡LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO!” mensaje está tratando de advertirle sobre.

Por supuesto, este no es siempre el caso, y hay muchas razones para que la huella digital de la clave ECDSA cambie para un servidor. En mi caso, tenía una dirección IP elástica en AWS y la asignaba a un servidor diferente después de volver a implementar nuestra aplicación. La dirección IP y el nombre de host al que me estaba conectando eran los mismos, pero el servidor subyacente era diferente, que es lo que hizo que el cliente SSH emitiera esta advertencia.

Solucionar el problema

Si está 100% seguro de que se trataba de un comportamiento esperado y de que no hay ningún problema de seguridad potencial, deberá solucionar el problema antes de continuar.

Las formas más fáciles que he encontrado para solucionar este problema son las siguientes dos soluciones.

Resolver manualmente a través de known_hosts

  • En el mensaje de advertencia, busque la línea que le indica dónde se encuentra la clave ECDSA infractora en el known_hosts archivo. En mi ejemplo, esta línea decía “Clave ECDSA ofensiva en /Users/scott/.ssh/known_hosts:47”, que se refiere a la línea 47.
  • Abre el known_hosts archivo especificado en el mensaje de advertencia
  • Eliminar la línea especificada en el mensaje de advertencia

Al eliminar esta línea, su cliente SSH no tendrá una huella digital de clave ECDSA para comparar y, por lo tanto, le pedirá nuevamente que verifique la autenticidad del servidor la próxima vez que se conecte. Una vez hecho esto, tendrá una nueva huella digital en nuestro known_hosts para este servidor y la advertencia desaparecerá.

Resolver usando ssh-keygen

Otra solución sería utilizar el ssh-keygen utilidad para eliminar la clave infractora de su known_hosts archivo, que se puede hacer con el siguiente comando:

$ ssh-keygen -R [hostname-or-IP]

Entonces, en mi ejemplo, lo usaría así:

$ ssh-keygen -R ec2-192-168-1-1.compute-1.amazonaws.com

Este método es bueno si no desea modificar manualmente el known_hosts archivo usted mismo, y la utilidad es más fácil de usar si tiene varios nombres de host y direcciones IP para corregir. También puede manejar nombres de host hash en un known_hosts.old archivo.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad