Tengo un servidor (supongamos que su IP es abcd) que permite a los usuarios iniciar sesión a través de ssh. Ahora quiero cambiar la máquina física manteniendo la misma ip. Para que un usuario como este siga accediendo a la nueva máquina
$sshabcd
El problema es que cada vez que un usuario intenta iniciar sesión, aparece el siguiente error de falta de coincidencia de clave ssh.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @ ADVERTENCIA: ¡LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ ¡ES POSIBLE QUE ALGUIEN ESTÉ HACIENDO ALGO MALO! ¡Alguien podría estar espiándote en este momento (ataque de intermediario)! También es posible que se haya cambiado la clave del host RSA. La huella digital de la clave RSA enviada por el host remoto es 02:dc:c6:18:1b:34:b7:1d:fa:90:ab:e1:95:48:69:84. Por favor, póngase en contacto con el administrador del sistema. Agregue la clave de host correcta en /home/user/.ssh/known_hosts para deshacerse de este mensaje. Clave ofensiva en /home/user/.ssh/known_hosts:37 La clave de host RSA para antiguos alumnos ha cambiado y usted ha solicitado una verificación estricta. Error en la verificación de la clave del host.
Sé que el usuario puede eliminar la línea n.° 37 del archivo ~/.ssh/known_hosts y la próxima vez recibirá un mensaje de sí/no. Lo que quiero es que el usuario no esté al tanto de todo este asunto del reemplazo de la máquina y solo reciba una solicitud de contraseña.
¿Como hacer eso?
Respuesta1
Comoethbellmencionado, puede copiar las claves de host actuales al nuevo servidor.
Puede encontrar las claves de su host abriendo su sshd_config
archivo (en mi cuadro Ubuntu 12.04 está /etc/ssh/sshd_config
). En el archivo de configuración busque las HostKey
entradas. Estas entradas le indicarán dónde se encuentran los archivos de claves del host. Debería poder copiar estos archivos al nuevo servidor y actualizar los del nuevo servidor sshd_config
para que apunten a las claves copiadas (o simplemente sobrescribir los archivos que ya existen en el nuevo servidor).
Además, tenga en cuenta esta sección de la sshd_config
página de manual, específicamente la parte sobre permisos:
Especifica un archivo que contiene una clave de host privada utilizada por SSH. El valor predeterminado es
/etc/ssh/ssh_host_key
para la versión 1 del protocolo,/etc/ssh/ssh_host_dsa_key
y/etc/ssh/ssh_host_ecdsa_key
para/etc/ssh/ssh_host_rsa_key
la versión 2 del protocolo. Tenga en cuenta que sshd(8) se negará a utilizar un archivo si es accesible en grupo o en todo el mundo. Es posible tener varios archivos de claves de host. Las claves “rsa1” se utilizan para la versión 1 y “dsa”, “ecdsa” o “rsa” se utilizan para la versión 2 del protocolo SSH.
Respuesta2
Si tuviera la clave de host original, podría restaurarla y esto detendría el error.
O puede desactivar StrictHostKeyChecking en su archivo de configuración sshd.
... Hacer esto, sin embargo, es una idea terrible, terrible.
Si hay una manera de ejecutarlo ssh-keygen -R server.example.com
en las máquinas cliente, esa sería la mejor manera, porque desactivar la verificación de la clave del host es como decir: "Oye, atácame". Me dan ganas de oscuridad cuando las cosas cambian, pero la seguridad debería ser la prioridad número uno sobre los cambios que oscurecen.
Respuesta3
Puedes probarlo así
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Tenga en cuenta que si la carpeta .ssh aún no existe, el comando anterior fallará. Además, podría ser mejor al crear el archivo establecer un permiso mínimo posible (básicamente lectura y escritura solo para el propietario). Aquí hay un comando más avanzado:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
Para obtener más información sobre este problema, debe acceder a este sitio web:Error de cambio de clave de host SSH