Cómo solucionar la “Advertencia: ¡La identificación del host remoto ha cambiado!”

Publicado: 2024-10-16
Tabla de contenido
  • Comprender la advertencia
  • Verificar la identidad del servidor
  • Solución 1: elimine la clave de host anterior manualmente (Windows, Mac, Ubuntu)
  • Solución 2: borre todo el archivoknown_hosts (Windows, Mac, Ubuntu)
  • Solución 3: ignorar temporalmente la comprobación de la clave del host (Windows, Mac, Ubuntu)
  • Solución 4: agregue la nueva clave de host manualmente (Windows, Mac, Ubuntu)
  • Solución 5: compruebe si hay cambios en la dirección IP o DNS (Windows, Mac, Ubuntu)
  • Mejores prácticas para evitar este problema en el futuro (Windows, Mac, Ubuntu)
  • Conclusión

Cuando intenta conectarse a un servidor remoto mediante SSH, es posible que aparezca el mensaje de error: "Advertencia: ¡La identificación del host remoto ha cambiado!". . Este mensaje es una característica de seguridad que SSH utiliza para protegerlo de ataques de intermediarios, donde un tercero podría interceptar su comunicación con el servidor.

En términos simples, esta advertencia le indica que la huella digital del servidor (un identificador único almacenado en su máquina local) no coincide con lo que SSH registró previamente. Podría ser un cambio legítimo, como la reinstalación del servidor o el cambio de su dirección IP, pero también podría indicar una posible amenaza a la seguridad. SSH bloquea la conexión para proteger su sistema hasta que verifique la autenticidad del servidor.

En este artículo, explicaremos cómo resolver este problema de forma segura en sistemas Mac , Ubuntu (Linux) y Windows , asegurándonos de que pueda continuar conectándose de forma segura sin ignorar los riesgos potenciales.

Quizás te interese leer: Cómo solucionar el error Permiso denegado (Publickey)

Comprender la advertencia

¿Por qué aparece la advertencia?

SSH almacena una huella digital de la clave del servidor remoto en un archivo known_hosts en su máquina local. Esta huella digital se usa para verificar que se está conectando al mismo servidor cada vez que usa SSH. Si la huella digital del servidor cambia, SSH le mostrará la advertencia porque no puede estar seguro de si la identidad del servidor ha cambiado legítimamente o si alguien está intentando interceptar su conexión.

Escenarios comunes para la advertencia:

  • Reinstalación o actualización del servidor: si el servidor se ha reinstalado, reiniciado o actualizado, es posible que genere una nueva clave SSH, que no coincidirá con la almacenada en su known_hosts .
  • Cambio de dirección IP: si la dirección IP del servidor ha cambiado (por ejemplo, debido a un cambio a un nuevo proveedor de alojamiento o red), SSH podría marcar esto como un cambio sospechoso.
  • Cambios de DNS: si hay actualizaciones o configuraciones incorrectas en los registros DNS del servidor, SSH podría interpretarlo como un servidor diferente.
  • Cambios en la configuración del servidor: a veces, los administradores del servidor cambian la configuración de su clave SSH, lo que da como resultado una nueva clave que no coincide con la anterior.
  • Posible amenaza a la seguridad (ataque de hombre en el medio): la advertencia podría ser una señal de que alguien intenta interceptar su conexión al servidor. Si no está seguro de los cambios, es esencial verificar la identidad del servidor antes de continuar.

La función del archivo known_hosts :

El archivo known_hosts es donde SSH almacena información sobre los hosts remotos a los que se ha conectado anteriormente. El archivo normalmente se encuentra en el directorio ~/.ssh/ en Mac y Ubuntu, y para los usuarios de PuTTY en Windows, almacena claves de host en el Registro de Windows.

Verificar la identidad del servidor

Antes de realizar cualquier cambio, resuelva el mensaje “¡La identificación del host remoto ha cambiado! ”Advertencia, es fundamental verificar si la identidad del servidor ha cambiado legítimamente. Este paso garantiza que no será víctima de un ataque de intermediario.

Por qué debería verificar primero la identidad del servidor

Ignorar este paso podría resultar en la conexión a un servidor comprometido o malicioso, lo que podría poner en riesgo sus datos o credenciales. Tome siempre en serio esta advertencia, especialmente si no está seguro de los cambios recientes en el servidor.

Pasos para verificar la identidad del servidor:

  • Comuníquese con el administrador del servidor: si no es usted quien mantiene el servidor, comuníquese con el administrador o el proveedor de alojamiento y pregúntele si se realizaron cambios recientes, como un cambio de dirección IP, reinstalación del servidor o regeneración de claves.
  • Compare la huella digital de la clave del host: use el siguiente comando para verificar la clave del host del servidor manualmente:
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    El resultado mostrará la huella digital de la clave del host, que puede comparar con la de su known_hosts o solicitarla al administrador del servidor.

Solución 1: elimine la clave de host anterior manualmente (Windows, Mac, Ubuntu)

Para Mac y Ubuntu (Linux):

  1. Abra la terminal.
  2. Abra el archivo ~/.ssh/known_hosts usando un editor de texto:
     nano ~/.ssh/known_hosts
  3. Busque la línea que corresponda al nombre de host o la dirección IP del servidor remoto.
  4. Elimine la línea que contiene la clave de host anterior.
  5. Guarde el archivo y cierre el editor de texto.
  6. Vuelva a conectarse al servidor usando SSH:
     ssh <username>@<hostname>

Eliminación automatizada (Mac y Ubuntu):

En lugar de editar manualmente el archivo known_hosts , puede usar el siguiente comando para eliminar la clave de host anterior automáticamente:

 ssh-keygen -R <hostname or IP>

Para Windows (usando PuTTY):

  1. Abra Masilla .
  2. Presione Windows + R , escriba regedit y presione Entrar.
  3. Navegue hasta la ruta del registro:
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. Localice la entrada asociada con el nombre de host o la dirección IP del servidor remoto.
  5. Haga clic derecho en la entrada y seleccione Eliminar .
  6. Vuelva a conectarse al servidor en PuTTY y le pedirá que acepte la nueva clave.

Para Windows (usando Git Bash):

  1. Abra Git Bash .
  2. Ejecute el siguiente comando:
     ssh-keygen -R <hostname>
  3. SSH le pedirá que acepte la nueva clave la próxima vez que se conecte.

Solución 2: borre todo el known_hosts (Windows, Mac, Ubuntu)

Para Mac y Ubuntu (Linux):

  1. Abra la terminal.
  2. Ejecute el siguiente comando para eliminar todo el archivo known_hosts :
     rm ~/.ssh/known_hosts
  3. Vuelva a conectarse al servidor remoto mediante SSH:
     ssh <username>@<hostname>

Para Windows (usando PuTTY):

  1. Abra Masilla .
  2. Presione Windows + R , escriba regedit y presione Entrar para abrir el Editor del Registro .
  3. Navega a:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. Haga clic derecho en la carpeta SshHostKeys y elija Eliminar . Esto eliminará todas las claves de host almacenadas.
  5. Vuelva a conectarse al servidor usando PuTTY y se le pedirá que acepte la nueva clave de host.

Para Windows (usando Git Bash):

  1. Abra Git Bash .
  2. Elimine el archivo known_hosts ejecutando:
     rm ~/.ssh/known_hosts
  3. Cuando se vuelva a conectar al servidor mediante SSH, se le pedirá que acepte la nueva clave de host.

Solución 3: ignorar temporalmente la comprobación de la clave del host (Windows, Mac, Ubuntu)

Si necesita conectarse al servidor rápidamente y no tiene tiempo para eliminar manualmente las claves de host antiguas, puede omitir temporalmente la verificación de la clave de host. Si bien este método funciona en caso de necesidad, no se recomienda su uso regular , ya que puede exponerlo a posibles riesgos de seguridad.

Para Mac y Ubuntu (Linux):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Para Windows (usando Git Bash):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Para Windows (usando PuTTY):

  1. Abra Masilla .
  2. Vaya a Conexión > SSH > Claves de host .
  3. Deshabilite la verificación de la clave del host seleccionando Aceptar siempre .
  4. Vuelva a conectarse al servidor sin verificar la clave del host.

Solución 4: agregue la nueva clave de host manualmente (Windows, Mac, Ubuntu)

Para Mac y Ubuntu (Linux):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Para Windows (usando Git Bash):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Para Windows (usando PuTTY):

Desafortunadamente, PuTTY no tiene un equivalente directo para ssh-keyscan . Para agregar la clave de host manualmente, deberá conectarse al servidor y permitir que PuTTY le solicite la nueva clave de host.

Solución 5: compruebe si hay cambios en la dirección IP o DNS (Windows, Mac, Ubuntu)

Para Mac y Ubuntu (Linux):

 nslookup <hostname>
 dig <hostname>

Para Windows (usando Git Bash):

 nslookup <hostname>
 dig <hostname>

Para Windows (usando PuTTY):

  1. Abra el símbolo del sistema o PowerShell .
  2. Utilice el siguiente comando para verificar el DNS o la dirección IP:
     nslookup <hostname>
  3. Compare la dirección IP en el resultado con lo que PuTTY muestra en el registro.
  4. Si la dirección IP ha cambiado, elimine la clave de host anterior del registro de PuTTY navegando a:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. Vuelva a conectarse a través de PuTTY y le pedirá que acepte la nueva clave.

Mejores prácticas para evitar este problema en el futuro (Windows, Mac, Ubuntu)

  • Utilice direcciones IP estáticas: configure sus servidores con direcciones IP estáticas para evitar cambios inesperados que puedan desencadenar la advertencia.
  • Limpiar o actualizar periódicamente known_hosts : revise y limpie periódicamente las claves de host antiguas u obsoletas.
  • Considere el uso de certificados SSH: utilice certificados SSH para una administración escalable de claves de host, lo que reduce las posibilidades de que aparezca esta advertencia.
  • Supervise los cambios de DNS o IP: esté atento a los cambios en los registros DNS o las direcciones IP y actualice known_hosts en consecuencia.

Conclusión

El mensaje "¡La identificación del host remoto ha cambiado!" La advertencia es una característica de seguridad esencial en SSH que evita el acceso no autorizado verificando la identidad de los servidores remotos. Si bien puede resultar alarmante, es importante tomar las medidas necesarias para verificar la identidad del servidor antes de realizar cualquier cambio.

Al utilizar las soluciones descritas en este artículo, puede resolver la advertencia de forma segura ya sea que esté en Windows , Mac o Ubuntu . Recuerde siempre verificar primero la autenticidad del servidor y luego elegir la solución que mejor se adapte a su situación, ya sea eliminar la clave de host anterior, borrar el known_hosts u omitir la verificación temporalmente.

Además, seguir las mejores prácticas, como el uso de direcciones IP estáticas, actualizar known_hosts periódicamente y considerar los certificados SSH, puede ayudar a minimizar la aparición de este problema en el futuro.