Problemas de conectividad en SSH

Los errores de conexión mientras intentas conectarte a través de SSH pueden ser diversos, para ello deberás identificar el error y así poder buscar las formas de solucionarlo.

Algunas razones por las cuales no puedes conectarte son las siguientes:

Cliente SSH no instalado

Antes de verificar otras opciones deberás revisar si tienes instalado un cliente SSH y si lo tienes correctamente configurado.

La maquina que intente conectarse a un servidor SSH deberá tener instalado un cliente SSH para poder acceder de forma remota al servidor.

Para verificar si tienes un cliente SSH instalado y configurado, basta teclerar ssh en tu terminal, sea linux o windows y deberás ver una salida similar a la siguiente:

verificar ssh desde windows

Si la terminal proporciona una lista de opciones de comando SSH, el cliente SSH ya está instalado en el sistema. Si embargo, si responde con "command not found" deberás instalar un cliente SSH.

Instalar un cliente SSH para windows

Windows 10, de manera predeterminada incorpora SSH en el sistema operativo, por lo que no habría problema para usar SSH desde el Símbolo del sistema (CMD). Para las versiones anteriores, podrás descargar OpenSSH y configurarlo para usarlo. Esto lo puedes hacer agregando SSH en las variables de entorno.

Instalar un cliente SSH para Linux

Para instalar un cliente SSH en linux, podrás ejecutar los siguientes comandos en tu terminal.

Para sistemas Ubuntu/Debian

sudo apt install openssh-cliente

Para sistemas CentOs/RHEL

sudo yum install openssh-client

El demonio SSH no está instalado en el servidor

Así como necesitas la versión cliente en el dispositivo que se va a conectar, necesitas que el servidor escuche y acepte conexiones. Por lo tanto un servidor puede rechazar una conexión entrante si falta el servidor SSH o la configuración no es válida.

Para verificar si SSH está disponible en el servidor remoto, ejecuta esta instrucción en el servidor.

$ ssh localhost

Si la respuesta es «Connection refused» continua con la instalación de SSH en el servidor, como explico en esta entrada.

Si estas seguro de tener instalado el servidor, podrás omitir el paso de instalarlo nuevamente y continuar revisando los posibles errores.

Errores tipográficos

Los errores tipográficos son más comunes de lo que parecen y pueden deberse a la configuración del teclado, no descartes esta opción.

Asegúrate de estar introduciendo las credenciales usuario/contraseña de manera correcta.

Asegúrate también de verificar si la IP que estás utilizando es la correcta.

Finalmente, en el servidor, verifica que estás usando el puerto correcto para SSH. Puedes verificar el puerto que utiliza el servidor ejecutando el siguiente comando.

$ sudo grep Port /etc/ssh/sshd_config

El demonio SSH no se está ejecutando

El servicio SSH debe estar habilitado y ejecutándose en el servidor, si el servicio no funciona el demonio SSH no puede aceptar conexiones.

Para verificar el estado del servicio, ejecuta lo siguiente:

$ sudo systemctl status sshd

La respuesta deberá indicar que el servició se está ejecutando «running», como en la siguiente imagen.

Si el servicio no está activo deberás iniciarlo:

$ sudo systemctl start sshd

Es recomendable también habilitarlo para que se inicie en cada reinicio del servidor.

$ sudo systemctl enable sshd

El firewall está impidiendo las conexiones

SSH puede rechazar las conexiones debido a las restricciones del firewall, deberás asegurarte que el firewall tiene permitido admitir conexiones para SSH.

Revisa las reglas suministradas al firewall

$ sudo firewall-cmd --list-all

Si en la lista, no figura el puerto que requieres para SSH, agrégalo

$ sudo firewall-cmd --permanent --add-port=22/tcp

Reinicia el firewall

$ sudo firewall-cmd --reload

Podrás verificar si el puerto configurado para SSH está escuchando las peticiones

$ sudo lsof -i:22

Tiempo de conexión excedido

Un error del tipo «conecction timeout» tiempo de espera excedido significa que el cliente intentó establecer una conexión de red al servidor SSH, pero el servidor no respondió dentro del periodo de tiempo de espera.

En un cliente OpenSSH, una linea de comando como ssh user@203.0.113.0 puede resultar en un error similar a:

ssh: connect to host 203.0.113.0 port 22: Connection timed out

Soluciones:

  • Verifica que la dirección IP del servidor sea la correcta.
  • Verifica que la IP del servidor sea visible dentro de la red, puedes hacer un ping para verificar si el servidor está «visible» para el cliente que desea conectarse a dicha IP. $ ping ip_address
  • Verifica que tu red admite conectividad a través del puerto SSH que estás utilizando. Algunas redes públicas bloquean los puertos personalizados, si tienes duda acerca de esto, puedes consultarlo con tu administrador de red, o probando con otra IP que utilice el mismo puerto.

Permiso denegado

Si estás intentando conectarte a un servidor SSH que solo admite conexiones a través del uso de una clave privada, como lo hicimos en esta entrada y no tienes la clave adecuada, el error que te aparecerá tendrá un aspecto similar a este:

username@ip_address: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Podrás revisar esta configuración en el servidor, mediante el comando siguiente:

$ sudo grep PasswordAuthentication /etc/ssh/sshd_config

Si el resultado indica que está denegado el acceso mediante contraseñas, como en la imagen siguiente, podrás realizar las configuraciones que consideres necesarias.

Depuración y registro SSH

Para analizar problemas de SSH en linux, puedes activar el modo detallado (verbose) o modo de depuración.

Cuando habilitas este modo, SSH imprime mensajes de depuración que ayudan a solucionar problemas de conexión, configuración y autenticación.

Hay tres niveles de detalle, identificados por V

  • Nivel 1 -v
  • Nivel 2 -vv
  • Nivel 3 -vvv

Así, cuando intentes establecer una conexión ssh, podrás agregar este argumento para activar un modo depuración:

$ ssh -v username@ip_address

Este modo es muy útil porque te detalla los pasos que se realizan para establecer la conexión con el servidor remoto.

Conclusiones

Referencias:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *