Una conexión segura a Internet no es sólo lo ideal, sino que es esencial. De hecho, vamos a llegar a decir que es la prioridad número uno para tu sitio web. El error «Advertencia: La identificación del host remoto ha cambiado» protege tu conexión de ciertos ataques maliciosos, aunque en algunos casos, tú también puedes provocar el error sin querer.

El error está relacionado con tus claves de Secure Shell (SSH) y con la «huella digital» del servidor que un cliente comprobará. Si Secure Shell cree que hay un problema, bloqueará el acceso a tu servidor y lanzará un error. Pero puedes solucionarlo en unos pocos pasos.

En los próximos minutos, te mostraremos cómo solucionar el error «Advertencia: La identificación del host remoto ha cambiado», tanto para Windows como para Mac. Pero antes, vamos a darte más detalles sobre el propio mensaje de error.

Qué es un error»Advertencia: La identificación del host remoto ha cambiado» es un error

Una de las formas más seguras de conectarse a un servidor web es utilizar SSH. Es una herramienta de línea de comandos que te permite acceder a una red insegura de forma segura. Considéralo como un tipo de configuración «super-SFTP», aunque en la práctica no es una comparación 1:1.

Puedes acceder a tu sitio desde casi cualquier lugar en el que puedas utilizar Internet, siempre que tengas las credenciales de acceso adecuadas. Es más, la mayoría de las máquinas macOS y Linux tienen un cliente SSH integrado en el sistema operativo (SO). En el caso de Windows, utilizarás una interfaz dedicada (de la que hablaremos con más detalle más adelante).

En cuanto al error «Advertencia: La identificación del host remoto ha cambiado», está relacionado con las comprobaciones de seguridad que hará tu cliente. Una conexión SSH utiliza «claves» dedicadas -pequeños archivos almacenados en tu ordenador- como autenticación. Es algo así como un apretón de manos de Secure Sockets Layers (SSL), y de hecho, hay algunas similitudes de alto nivel entre SSH y SSL.

Uno de los aspectos a los que ayudan las claves es a proporcionar una huella digital permanente de tu servidor host. Esto asegurará que la conexión sea precisa y que no seas objeto de un ataque «machine-in-the-middle».

Si el cliente cree que esas huellas digitales difieren de lo que entiende que es correcto, obtendrás el error «Advertencia: La identificación del host remoto ha cambiado» en el momento de la conexión:

[user@hostname ~]$ ssh root@user

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ 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.

Please contact your system administrator.

Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.

Offending RSA key in /var/lib/sss/pubconf/known_hosts:4

RSA host key for user has changed and you have requested strict checking.

Host key verification failed.

En cuanto a los errores, éste es detallado y claro: te dice lo que ha ocurrido, una posible razón de por qué y cómo podrías solucionarlo.

Sin embargo, hay un aspecto que podemos tocar un poco más antes de mostrarte cómo solucionar el error «Advertencia: La identificación del host remoto ha cambiado».

Cómo ayuda el archivo known_hosts a la autenticación SSH

Verás que el mensaje de error hace referencia a un archivo known_hosts. El nombre debería darte una pista de lo que contiene, pero para mayor claridad, es una lista de hosts remotos SSH conocidos por el ordenador. Se utiliza como archivo cliente de referencia para el proceso de autenticación.

Cuando te conectes por primera vez a un servidor, a menudo recibirás una solicitud de confirmación a través de su interfaz, preguntándote si quieres conectarte. Si es así, esta huella digital pasará a formar parte de tu archivo known_hosts.

Por supuesto, si la huella digital difiere de lo que hay en el archivo known_hosts, esto podría indicar que un usuario malintencionado te está apuntando. En otros casos, puede que ya sepas por qué hay una diferencia, aunque vale la pena estar atento a pesar de ello.

Cómo solucionar el error «Advertencia: La identificación del host remoto ha cambiado» (en Windows y Mac)

Puedes trabajar para arreglar el error «Advertencia: La identificación del host remoto ha cambiado» tanto en Windows como en macOS. Sin embargo, tienes más flexibilidad para hacerlo en Mac.

Cubriremos muchas de las formas en que puedes volver a arreglar las cosas, empezando por Windows.

1. Windows

Es importante tener en cuenta que las máquinas Windows pueden no tener un archivo known_hosts. Sin embargo, si utilizas el cliente OpenSSH, existe un archivo. Para encontrarlo, abre la barra de búsqueda de Windows y navega hasta tu carpeta de usuario con el comando %USERPROFILE%.

Esto abrirá el directorio dentro del Explorador de Archivos. También habrá una carpeta .ssh dentro:

The Windows File Explorer.
El Explorador de Archivos de Windows.

El archivo que queremos en esta carpeta es known_hosts. Puedes abrirlo con el Bloc de notas (o tu editor de texto favorito). Dentro habrá una lista de claves:

The Windows known_hosts file.
El archivo known_hosts de Windows.

Aquí, puedes eliminar la clave que está causando el problema, y luego volver a guardar el archivo.

Algunos usuarios pueden preferir el cliente PuTTY. Las claves se encuentran en el Registro, aunque cumplen la misma función que OpenSSH.

Tendrás que abrir el Editor del Registro de Windows (también conocido como «regedit»). Puedes hacerlo de la forma que te resulte más cómoda, pero la forma más rápida es escribir el nombre de la aplicación en la barra de búsqueda de Windows:

The Registry Editor link in the Windows Start menu.
El enlace del Editor del Registro en el menú de Inicio de Windows.

Aquí, busca el siguiente destino dentro de regedit:

HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/

Aquí verás una lista de entradas relacionadas con las conexiones guardadas en tu ordenador. Tu trabajo consiste en eliminar la que esté causando un problema:

Deleting a Registry key in regedit.
Eliminar una clave del Registro en regedit.

Una vez que hagas clic en el botón Eliminar, también tendrás que confirmar que quieres eliminar la clave:

The Confirm Value Delete dialog.
El cuadro de diálogo Confirmar la eliminación del valor.

Si haces clic en «Sí», la clave desaparecerá para siempre y no debería aparecer el error «Advertencia: La identificación del host remoto ha cambiado».

2. Mac

El Mac tiene un par de maneras de solucionar el error «Advertencia: La identificación del host remoto ha cambiado», ya sea a través de una aplicación premium como SSH Config Editor o el Terminal. Los resultados serán los mismos, así que te aconsejamos que elijas la opción que te resulte más cómoda (y económica).

Nuestro enfoque preferido es acceder al archivo dentro de una ventana de Terminal (o iTerm2 si usas esa app), y también abrirlo con un editor dedicado Nano o Vim. Esto se debe a que es accesible para todo el mundo y sencillo de usar, independientemente de tu nivel de experiencia.

En este caso, vamos a utilizar Nano. En primer lugar, abre tu Terminal utilizando el proceso que te resulte más cómodo:

Opening the Terminal from Spotlight.
Abriendo el Terminal desde Spotlight.

Desde aquí, ejecuta el comando nano ~/.ssh/known_hosts en tu ventana. Esto abrirá una nueva instancia de Nano y mostrará las claves dentro de tu archivo known_hosts:

The Nano editor with the known_hosts file open.
El editor Nano con el archivo known_hosts abierto.

Debes eliminar la clave que provoca el error «Advertencia: La identificación del host remoto ha cambiado» y luego guardar los cambios.

También es posible que quieras eliminar todo el archivo known_hosts, especialmente si sólo utilizas SSH para uno o dos sitios. Para ello, puedes ejecutar rm .ssh/known_hosts en una ventana de Terminal.

Hay otro método para modificar el archivo known_hosts en Mac: utilizar la utilidad ssh-keygen desde la línea de comandos. Esto es estupendo si no quieres indagar en el propio archivo, o si quieres trabajar con un solo sitio o clave.

Para ello, abre una ventana de Terminal y ejecuta ssh-keygen, seguido del nombre de tu servidor. Por ejemplo:

ssh-keygen -R server.example.com

Esto no te preguntará si quieres eliminar las líneas especificadas, así que asegúrate de que estás eliminando las correctas antes de proceder:

Using ssh-keygen to delete from the known_hosts file.
Usando ssh-keygen para eliminar del archivo known_hosts.

Una vez hecho esto, no debería aparecer el error «Advertencia: La identificación del host remoto ha cambiado» de ahí en adelante.

Resumen

La seguridad web no consiste sólo en instalar plugins y crear una contraseña fuerte. Las conexiones que utilizas para entrar en los servidores necesitan tu máxima atención. Si no quieres ser objeto de un ataque «machine-in-the-middle», querrás utilizar el acceso SSH cuando te conectes.

Sin embargo, el sistema funciona casi demasiado bien. Puedes obtener el error «Advertencia: La identificación del host remoto ha cambiado» por varias razones, y algunas son inocentes.

En cualquier caso, puedes arreglar el error en un santiamén a través del Símbolo del sistema o del Terminal, utilizando sólo un puñado de comandos.