Introducción al error Connection Refused en SSH
Uno de los problemas más frustrantes para los administradores de sistemas y desarrolladores que utilizan sistemas operativos basados en Linux es intentar conectarse a un servidor remoto mediante SSH y recibir el mensaje ssh: connect to host [IP] port 22: Connection refused. Este fallo indica que la solicitud de conexión ha llegado a la máquina de destino, pero ningún servicio está aceptando conexiones en el puerto especificado.
Causas principales del error SSH Connection Refused
Antes de aplicar cualquier solución, es importante comprender por qué ocurre este fallo en distribuciones como Ubuntu, Debian o CentOS. Las causas más comunes incluyen:
- El servicio SSH (OpenSSH Server) no está instalado o se encuentra detenido.
- El cortafuegos (UFW, Firewalld o iptables) está bloqueando el tráfico en el puerto SSH.
- El demonio SSH está configurado para escuchar en un puerto alternativo diferente al puerto predeterminado 22.
- Problemas en la red o en las interfaces de red del servidor remoto.
Método 1: Verificar y reiniciar el servicio SSH
El primer paso y el más común para solucionar este problema es asegurarnos de que el servidor SSH esté activo y ejecutándose en la máquina remota. Si tienes acceso físico o mediante una consola VNC al servidor, ejecuta los siguientes comandos:
- Comprueba el estado actual del servicio SSH ejecutando el comando:
sudo systemctl status ssh(osshden distribuciones RedHat). - Si el servicio aparece como detenido o inactivo, enciéndelo con:
sudo systemctl start ssh. - Habilita el inicio automático del servicio al arrancar el sistema con:
sudo systemctl enable ssh.
Método 2: Comprobar la configuración del cortafuegos
A menudo, las reglas del cortafuegos bloquean las solicitudes entrantes al puerto SSH por motivos de seguridad o por una mala configuración. Para verificar y abrir el puerto en sistemas que usan UFW (como Ubuntu), sigue estos pasos:
- Verifica el estado del cortafuegos ejecutando:
sudo ufw status. - Si está activo y no muestra el puerto SSH, permite el acceso ejecutando:
sudo ufw allow ssho especificando el puertosudo ufw allow 22/tcp. - Recarga las reglas del cortafuegos para aplicar los cambios:
sudo ufw reload.
Método 3: Verificar el puerto de escucha en el archivo de configuración
Si el servicio está activo y el cortafuegos está configurado correctamente, es posible que el demonio SSH esté configurado para escuchar en un puerto distinto al 22. Para comprobarlo:
- Abre el archivo de configuración de SSH con un editor de texto como nano:
sudo nano /etc/ssh/sshd_config. - Busca la línea que comienza con
Port(por ejemplo,Port 2222). Si está comentada con un numeral (#), el servicio usa el puerto por defecto. - Si cambiaste el puerto, asegúrate de conectarte desde tu máquina cliente especificando el puerto correcto usando la bandera -p:
usuario@ip_del_servidor -p 2222. - Si realizaste modificaciones en el archivo de configuración, reinicia el servicio para aplicar los cambios:
sudo systemctl restart ssh.