Cómo solucionarlo: "ADVERTENCIA: LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO" en Mac y Linux

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 que se pasan, estén libres de escuchas ilegales. Debido a esto, hay bastantes comprobaciones integradas en los clientes SSH populares, como OpenSSH , que garantizan que su conexión no pueda verse comprometida.
Un ejemplo de una de estas comprobaciones es el siguiente, que identifica cuándo ha cambiado la huella digital de un servidor:
$ ssh ec2-user@ec2-192-168-1-1.compute-1.amazonaws.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 la clave ECDSA , que luego guarda en su directorio de inicio ~/.ssh/known_hostsEsto se hace después de la primera conexión al servidor y le indicará un mensaje como este:
$ ssh ec2-user@ec2-192-168-1-1.compute-1.amazonaws.com
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 guardará en el known_hostsarchivo, que SSH consultará cada vez que se conecte a ese servidor.
Pero, ¿qué sucede si la clave ECDSA de un servidor ha cambiado desde la última vez que se conectó? Esto es alarmante porque en realidad podría significar que te estás conectando a un servidor diferente sin saberlo. Si este nuevo servidor es malicioso, entonces podría ver todos los datos enviados desde y hacia su conexión, los cuales pueden ser utilizados por cualquier persona que configure el servidor. Esto se llama un ataque de hombre en el medio . Este escenario es exactamente lo que dice "ADVERTENCIA: ¡LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO!" El mensaje está tratando de advertirte acerca de.
Por supuesto, esto no siempre es así, 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 asigné 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 disparó al cliente SSH para emitir esta advertencia.

Arreglando el problema

Si está 100% seguro de que este fue el comportamiento esperado y de que no existe un 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 conocido_hosts

  • En el mensaje de advertencia, busque la línea que le indica dónde se encuentra la clave ECDSA en el known_hostsarchivo. 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.
  • Abra el known_hostsarchivo 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 dactilar de ECDSA para comparar, y por lo tanto le pedirá que verifique nuevamente la autenticidad del servidor la próxima vez que se conecte. Una vez hecho esto, tendrá una nueva huella digital en nuestro known_hostsarchivo para este servidor, y la advertencia desaparecerá.

Resolver utilizando ssh-keygen

Otra solución sería utilizar la utilidad ssh-keygen para eliminar la clave ofensiva de su known_hostsarchivo, lo que se puede hacer con el siguiente comando:
$ ssh-keygen -R [hostname-or-IP]
Así que 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_hostsarchivo, 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 con hash en un known_hosts.oldarchivo.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.