Generalidades
Esta guía proporciona tres métodos para eliminar la advertencia llaves de host que puedes ver al conectarse a tu servidor web/dominio a través de SSH.
Credenciales de SSH
Al correr los comandos de este artículo, asegúrate de cambiar username por tu usuario de Shell y hostname por tu nombre de host de dominio o servidor web.
Antecedentes
El mensaje de error luce similar a lo siguiente:
-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 the host key has just been changed. The fingerprint for the key sent by the remote host is FINGERPRINT DISPLAYED HERE Please contact your system administrator. Add correct host key in /home/username/.ssh/known_hosts to get rid of this message. Offending key in /home/username/.ssh/known_hosts:219 remove with: ssh-keygen -f '/home/username/.ssh/known_hosts' -R 'example.com' Host key for example.com has changed and you have requested strict checking. Host key verification failed.
Esto suele significar que la llave de host del servidor web no coincide con la llave que figura en el archivo known_hosts de tu computador. Esto no suele ser motivo de preocupación y se puede resolver de diferentes maneras.
Cómo resolver el mensaje de advertencia
Si te has conectado al servidor en el pasado, se almacenó una llave de host antigua en el archivo /username/.ssh/known_hosts de tu computador. Los tres métodos siguientes se pueden utilizar para eliminar este error editando o eliminando este archivo.
Estos comandos deben correrse en el computador que intenta conectarse al servidor de DreamHost.
Método 1 — Generar una nueva llave de host (macOS o Linux)
-
Este método elimina automáticamente la llave antigua del archivo.
- Abre una terminal en tu computador.
- Corre el comando ssh-keygen usando la ruta al usuario SSH y el nombre de host que estás usando para conectarte.
[local]$ ssh-keygen -f /home/username/.ssh/known_hosts' -R HOSTNAME # Host example.com found: line 219 /home/username/.ssh/known_hosts updated.
- Intenta conectarte nuevamente a tu servidor a través de SSH.
- Esta vez verás la advertencia No se puede establecer la autenticidad del host. Revisa la sección de abajo para ver información sobre cómo resolver la misma.
Método 2 — Editar el archivo known_hosts
-
Este método edita y elimina manualmente la línea de host específica en el archivo.
Este es un método avanzado. Solo edita los known_hosts si te sientes cómodo editando archivos vía SSH.
Mac o Linux
- Ubica el número de línea en el mensaje de advertencia. En el ejemplo anterior, el número de línea es 219.
- Abre una terminal en tu computador.
- Dirígete al directorio /home/username/.ssh/.
[local]$ cd ~/.ssh
- Edita el archivo known_hosts. Si estás en una máquina Mac o Linux y estás usando el editor "vim", puedes simplemente escribir el siguiente comando para saltar a esa línea:
[local]$ vim +219 known_hosts
- El editor se abre en esa línea específica.
- Haz clic en la tecla d dos veces para eliminar esa línea.
- Escribe dos puntos (:) seguido por la letra x:
[local]$ :x
- Presiona la tecla Enter para guardar.
- Intenta conectarte nuevamente a través de SSH a tu servidor.
- Esta vez, verás la advertencia No se puede establecer la autenticidad del host. Revisa la sección de abajo para más información sobre cómo resolver esta la misma.
Windows
En un equipo Windows con PuTTY, accede a la carpeta Registro, como aparece en el método dos anterior. En ese directorio, aparecerá una lista de nombres de host. Da clic con el botón derecho en el que desees eliminar y selecciona Eliminar.
Método 3 — Eliminar tu archivo known_hosts
-
Este método elimina todo el archivo known_hosts de tu computador local.
No utilices este método si inicias sesión en servidores que no sean de DreamHost. Si es así, no tendrás forma de saber si tus llaves SSH han cambiado, ya que todas las llaves de host se habrán eliminado.
Mac o Linux
- Abre una terminal en tu computador.
- Navega al directorio .ssh.
[local]$ cd ~/.ssh
- Elimina el archivo known_host:
[local]$ rm known_hosts
- Confirma que el archivo ya no exista.
[local]$ ls -la
- Intenta conectarte nuevamente a través de SSH a tu servidor.
- Esta vez, verás la advertencia No se puede establecer la autenticidad del host. Revisa la sección de abajo para más información sobre cómo resolver esta la misma.
Windows (usando PuTTY)
Debes acceder al registro de Windows para eliminar los known_hosts:
- Realiza una búsqueda en el menú Inicio por regedit.exe.
- Navega a HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
- Escoge si eliminar todas las llaves o la llave de host individual en este directorio.
- Intenta conectarte de nuevo a tu servidor a través de SSH.
- Esta vez, verás la advertencia No se puede establecer la autenticidad del host. Revisa la sección de abajo para más información sobre cómo resolver esta la misma.
No se puede establecer la autenticidad del host
La próxima vez que te conectes, verás la advertencia No se puede establecer la autenticidad del host. Esto significa que no está en tu archivo known_hosts. Debes confirmar que la huella digital es la que se muestra en el panel siguiendo las instrucciones del siguiente artículo.
Una vez que hayas confirmado que coinciden, procede a iniciar sesión. La llave se actualizará automáticamente en el archivo known_hosts de tu computador.