Algunos mensajes clásicos de errores SSH son: “Connection timed out“, “unable to connect port 22“, “Port 22: Connection Refused” , “Could not resolve hostname“, “Permission denied” …
Hay una larga lista de errores SSH. Vamos a ver los errores más clásicos y la forma de solucionar problemas con SSH.
Este error nos muestra mensajes como estos que veremos a continuación.
–> En clientes OpenSSH veremos:
ssh: connect to host 203.0.113.0 port 22: Connection timed out
–> En PuTTY los errores serán como:
Network error: Connection timed out
¿Qué podemos hacer para resolver el error Connection Timeout en SSH ?
Este error es bastante claro. (Es algo diferente al error de Connection Timeout). En el caso del error Connection Refused, la conexión SSH está siendo enrutada correctamente hacia servidor SSH destino, pero este rechaza la conexión.
–> En clientes OpenSSH veremos:
ssh: connect to host [...] port 22: connection refused
ssh: connect to host 203.0.113.0 port 22: Connection refused
--> En PuTTY:
Network error: Connection refused
¿Qué podemos hacer para resolver el error Connection Refused en SSH ?
Hemos de comprobar que se permiten las conexiones al puerto 22 en la red (en tu red casera seguramente no tendrás este problema, pero en algunas redes privadas puede ocurrir).
Verficaremos que el servicio SSH del servidor está en ejecución, y corriendo en el puerto adecuado:
-
service ssh status o systemctl status sshd
- Podemos comprobar que el puerto de SSH está en ejecución en el servidor SSH, ejecutando netstat:
- Para obtener una lista de las sesiones TCP y de los puertos que están escuchando:
sudo netstat -plnt
Para buscar la info de un puerto concreto:
netstat -na | find "8080"
-
- Si puedes acceder al servidor SSH, comprueba el fichero de configuración de SSH:
/etc/ssh/sshd_config
O usa grep para encontrar el puerto que utiliza tu servidor SSH:
grep Port /etc/ssh/sshd_conf
- También podemos comprobar si el cortafuegos del servidor está haciendo de las suyas, y quizás el puerto para SSH se encuentra cerrado.
- Revisamos la configuración de iptables:
iptables -L
Error SSH : Problemas en resolución de Nombres de Host
En estos casos, al intentar conectar a un nombre de host, SSH nos responderá algo como: Nombre o servicio desconocido. Algo así como "no se donde me has mandado conectar" ...
Y es por un problema de resolución de nombres.
--> En clientes OpenSSH veremos:
ssh: Could not resolve hostname example.com: Name or service not known
--> En PuTTY veremos:
Unable to open connection to example.com Host does not exist
¿Qué podemos hacer para solucionar errores SSH de resolución de nombres de Host?
- Hemos de comprobar que podemos resolver el nombre de host al que intentamos conectar.
- Podemos intentar hacer ping al hostname, y utilizar nslookup para comprobarlo.
- Si no obtenemos respuesta desde el hostname, probaremos a conectar por IP.
Error SSH : Permission denied (publickey)
En los casos del error "Permission denied (publickey)", el problema está en que el servidor SSH nos está pidiendo una clave publica que no tenemos, o bien tenemos una pero está equivocada, o se ha pasado con errores al servidor SSH ...
Permission denied (publickey)
Error SSH : Remote Host Identification has changed
Este error apunta a un cambio en el nombre del host
--> Si usamos PuTTY, veremos:
PuTTY error output
De nuevo usaremos los diagnósticos previos para confirmar que el hostname existe y podemos llegar hasta él.
Otras causas de problemas SSH
- El servicio SSH no está corriendo sobre el puerto 22 (Improbable, seguramente tú ya sabes en qué puerto lo has configurado, pero revísalo).
- Alguna directiva SSH te bloquea el acceso. Revisa las directivas SSH y los permisos de los ficheros necesarios para SSH.
- Tienes claves SSH viejas o tu Servidor SSH está corrupto. Quizás sea necesario reinstalar SSH y regenerar las claves SSH:
- Si la razón es esta, probablemente recibas errores como este:
Feb 18 13:15:31 raspberrypi sshd[2392]: error: key_load_public: invalid format
Feb 18 13:15:31 raspberrypi sshd[2392]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 18 13:42:53 raspberrypi sshd[2770]: error: key_load_public: invalid format
Feb 18 13:42:53 raspberrypi sshd[2770]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
--> En este caso, puedes regenerar las claves SSH (eliminando previamente las viejas):
sudo rm /etc/ssh/ssh_host*
sudo dpkg-reconfigure openssh-server
Consejos generales para diagnóstico de errores SSH
- Conéctate al monitor del equipo y comprueba el status del servicio SSH:
- service ssh status
- Revisa las Directivas SSH que se encuentran activas
- Comprueba los permisos de los usuarios y grupos SSH
- también revisa el log a ver qué encuentras:
- journalctl -xe
- Usa el modo SSH debug : ssh -v