Qué sucede en segundo plano cuando conecta un servidor por primera vez usando ssh
Cuando se conecta a un servidor por primera vez, el servidor le pide que confirme que está conectado al sistema correcto. El siguiente ejemplo usa el comando ssh para conectarse a un host remoto llamado host03:
# ssh host03 The authenticity of host 'host03 (192.0.2.103)' can’t be established. ECDSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host03,192.0.2.103' (ECDSA) to the list of known hosts.
La validación del host es una de las principales características de OpenSSH. El comando verifica para asegurarse de que se está conectando al host al que cree que se está conectando. Cuando ingresa sí, el cliente agrega la clave de host pública del servidor al archivo ~/.ssh/known_hosts del usuario, creando el directorio ~/.ssh si es necesario. La próxima vez que se conecte al servidor remoto, el cliente comparará esta clave con la que proporciona el servidor. Si las claves coinciden, no se le preguntará si desea continuar conectándose.
¿Qué causa el error de verificación de clave de host?
Si alguien trata de engañarlo para que inicie sesión en su máquina para que pueda rastrear su sesión SSH, recibirá una advertencia similar a la 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 RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is dd:cf:50:31:7a:78:93:13:dd:99:67:c2:a2:19:22:13. Please contact your system administrator. Add correct host key in /home/user01/.ssh/known_hosts to get rid of this message. Offending key in /home/lcz/.ssh/known_hosts:7 RSA host key for 192.168.219.149 has changed and you have requested strict checking. Host key verification failed.
Si alguna vez recibe una advertencia como esta, deténgase y determine si hay una razón para que cambie la clave de host del servidor remoto (por ejemplo, si se actualizó SSH o se actualizó el servidor). Si no hay una buena razón para cambiar la clave de host, no intente conectarse a esa máquina hasta que haya resuelto la situación.
Cómo corregir el error "Error en la verificación de la clave del host"
Método 1:eliminar la clave anterior manualmente
1. En el servidor de origen, las claves antiguas se almacenan en el archivo ~/.ssh/known_hosts .
2. Solo si este evento es legítimo, y solo si se sabe con precisión por qué el servidor SSH presenta una clave diferente, edite el archivo unknown_hosts y elimine la entrada de clave que ya no es válida. Cada usuario en el cliente/servidor de origen tiene sus propios hosts_conocidos en su directorio de inicio, simplemente elimine la entrada en el archivo de un usuario específico para el servidor de destino. Por ejemplo:
– Si la raíz quiere conectarse al servidor mediante ssh, simplemente elimine la entrada en /root/.ssh/known_hosts el archivo está bien.
– Si el usuario de prueba desea acceder al servidor mediante ssh, elimine la entrada en el archivo /home/testuser/.ssh/known_hosts .
3. En mi caso, eliminaré la clave (resaltada en rojo) para el servidor de destino 192.168.219.149 del archivo /home/user01/.ssh/known_hosts.
# vim /home/user01/.ssh/known_hosts 172.104.9.113 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrY91bQOihgFZQ2Ay9KiBG0rg51/YxJAK7dvAIopRaWzFEEis3fQJiYZNLzLgQtlz6pIe2tj9m/Za33W6WirN8= 192.168.219.148 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU= 192.168.219.149 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=
Método 2:eliminar la clave anterior mediante el comando ssh-keygen
También puede eliminar la clave anterior con el comando ssh-keygen. La sintaxis para usar el comando se encuentra a continuación.
$ ssh-keygen -R [hostname|IP address]
Por ejemplo, en nuestro caso usaremos la dirección IP para eliminar la clave antigua.
$ ssh-keygen -R 192.168.219.149 # Host 192.168.219.149 found: line 3 /home/user01/.ssh/known_hosts updated. Original contents retained as /home/user01/.ssh/known_hosts.oldNota :Si no sabe con precisión por qué el servidor SSH presenta una clave diferente, su archivoknown_hosts es incorrecto o alguien debe investigar este servidor y las conexiones de red para comprender el motivo del cambio inesperado.
Verificar
Si los servidores remotos solicitan una confirmación para agregar la nueva clave al archivo ~/.ssh/known_host, confirma que ha eliminado correctamente la clave anterior. Si confirma la solicitud, la máquina de origen agrega la nueva clave en el archivo ~/.ssh/known_host.
$ ssh [email protected] The authenticity of host '192.168.219.149 (192.168.219.149)' can't be established. ECDSA key fingerprint is SHA256:V+iGp3gwSlnpbtYv4Niq6tcMMSZivSnYWQIaJnUvHb4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.219.149' (ECDSA) to the list of known hosts.