Síntomas
Intentamos conectarnos a un equipo remoto utilizando el protocolo SSH y recibimos un mensaje de error.
Básicamente el error nos advierte de la posibilidad de estar sufriendo un ataque “Man in the Middle” (ataque del hombre del medio). Nos informa de un cambio en la clave RSA guardada en el fichero “know_hosts” que puede ser encontrado en la siguiente ruta:
/root/.ssh/known_hosts
Mensaje de Error
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending RSA key in /root/.ssh/known_hosts:5 remove with: ssh-keygen -f "/root/.ssh/known_hosts" -R XXX.XXX.XXX.XXX RSA host key for XXX.XXX.XXX.XXX has changed and you have requested strict checking. Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]
Solución
La solución es simple, deberemos insertar de nuevo la clave RSA o eliminar la existente e introducir la contraseña de forma manual cada vez que quedamos conectarnos a la maquina remota. O generar una nueva clave RSA e insertarla en el fichero “known_hosts”.
Si existen varias claves RSA en el fichero “known_hosts” y queremos eliminar la correspondiente al equipo al que queremos acceder pero nos reporta este error, deberemos ejecutar el siguiente comando para averiguar cúal de todas las claves es:
ssh-keygen -H -F IP-nodo-remoto
El comando devolverá la clave que necesitamos eliminar. Quédate con los 8 primeros caracteres por ejemplo y accede al fichero known_hosts para eliminar la línea que coincide.
nano /root/.ssh/known_hosts
¡Listo! prueba ahora a conectarte al nodo que te daba problemas, podrás comprobar que el error ha desaparecido.