Vamos a ver cómo solucionar el error “No RSA host key is known and you have requested strict checking” al intentar acceder por ssh.
- ¿Qué es el error “No RSA host key is known“?
- Cómo solucionar el error “No RSA host key is known and you have requested strict checking”
El mensaje de error “No RSA host key is known and you have requested strict checking” especifica que ha ocurrido un error en la conexión ssh, que podemos analizar con el modo debug de SSH, y normalmente es un error provocado por el cambio de las claves públicas de una máquina, ya que la máquina entera ha sido reinstalada o las claves públicas pueden haber sido actualizadas;
este error también ocurre porque faltan no solo las claves públicas (o son erróneas) sino porque faltan incluso los directorios y ficheros necesarios para que funcione el acceso ssh con clave pública, tendremos que revisar que los ficheros existen y tienen los permisos correctos.
-bash-4.2$ ssh 192.168.8.140 No RSA host key is known for 192.168.8.140 and you have requested strict checking. Host key verification failed. |
Cómo solucionar el error No RSA host key is known and you have requested strict checking
Comprobamos que existe el fichero de clave pública en el cliente (/home/usuario/.ssh/id_rsa.pub) , y la estructura de directorios de .ssh, así como los ficheros authorized_keys y known_hosts, si es necesario generamos la clave pública del cliente si no existe.
Solucionar errores con los directorios de ssh y los ficheros de ssh necesarios
–> Creamos el directorio .ssh:
cd ~ mkdir .ssh |
–> le damos permisos correctos al directorio .ssh:
chmod 700 /home/usuario/.ssh |
o
chmod 700 ~/.ssh |
touch ~/.ssh/authorized_keys |
chmod 644 /home/usuario/.ssh/authorized_keys |
Si fuera necesario revisamos los permisos del directorio home ($HOME) del usuario y aplicamos los permisos correctos para evitar problemas de paso:
chmod 751 ~ chmod go-w ~ |
Solucionar errores con la clave pública SSH
Copiamos la clave pública del cliente y la añadimos en el fichero authorized_keys en el servidor ssh. Copiamos la clave pública ssh del cliente al servidor con ssh-copy-id, o copiamos remótamente la clave con scp, o directamente a mano.
Solucionar errores en el fichero known_hosts
Revisamos que exista el fichero known_hosts tanto en el servidor como en el cliente. Si no existe lo creamos:
touch /home/usuario/.ssh/known_hosts |
Si ya existía el fichero known_hosts, buscamos en el cliente y en el servidor referencias antiguas a ese hostname o su IP en el fichero known_hosts, y las eliminamos.
Actualizamos el fichero known_hosts del cliente, con la clave que tenga el servidor, que la sacamos con el comando ssh-keyscan y la ip del servidor:
-bash-4.2$ ssh-keyscan -t rsa ip_del_servidor # 192.168.8.140:22 SSH-2.0-OpenSSH_5.3 192.168.8.140 ssh-rsa ABAAB3NzbC1yc2EAABAAIwAAAREA1yg6wu6+PUzS9nggWA3ttjt3gDuzrdpDpGdjdCZ6g5CJCbpeRO1TL4J/KzqVsUOWKimHQNcAUan |
y en el cliente creamos el fichero known_hosts y le agregamos la info anterior del servidor.
Si realizamos todos estos pasos y verificaciones seguro que encontramos errores y finalmente solucionamos el error “No RSA host key is known and you have requested strict checking“.