No RSA host key is known and you have requested strict checking

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.

 

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.

 
resolver error ssh : No RSA host key is known
 

-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

 

–> Creamos el fichero authorized_keys :

touch ~/.ssh/authorized_keys

 

–> le damos permisos correctos al fichero 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“.