Introducción al Error SSH Connection Refused en Linux
Uno de los problemas más frustrantes para los administradores de sistemas y desarrolladores es intentar acceder a un servidor remoto mediante SSH y encontrarse con el mensaje ssh: connect to host [IP] port 22: Connection refused. Este error indica que la máquina de destino está accesible en la red, pero rechaza activamente las conexiones en el puerto especificado. En este artículo, analizaremos las causas raíz y los métodos definitivos para solucionarlo en distribuciones basadas en Debian, Ubuntu y CentOS.
Causas Principales del Error SSH Connection Refused
El rechazo de conexiones SSH puede deberse a varios factores comunes en entornos Linux:
- El servicio SSH (OpenSSH Server) no está instalado o se encuentra detenido en el servidor remoto.
- El puerto SSH predeterminado ha sido modificado y estás intentando conectar al puerto incorrecto.
- Un firewall (UFW, iptables, firewalld) está bloqueando el tráfico entrante al puerto SSH.
- Existe un problema de configuración en el archivo
sshd_config.
Método 1: Verificar y Reiniciar el Servicio SSH
El primer paso es comprobar si el demonio SSH está ejecutándose en el servidor remoto. Si tienes acceso físico o mediante una consola VNC/KVM al servidor, ejecuta los siguientes comandos:
- Comprueba el estado del servicio SSH con systemctl:
sudo systemctl status ssh(osshden sistemas RedHat). - Si el servicio está detenido, inícialo inmediatamente:
sudo systemctl start ssh. - Habilita el servicio para que se ejecute automáticamente tras cada reinicio:
sudo systemctl enable ssh.
Método 2: Comprobar la Configuración del Firewall
A menudo, las reglas del cortafuegos bloquean el acceso al puerto 22. Debes asegurarte de permitir el tráfico SSH explícitamente.
- Si utilizas UFW en Ubuntu/Debian, permite las conexiones SSH con:
sudo ufw allow ssh. - Si usas un puerto personalizado (por ejemplo, el 2222), ábrelo específicamente:
sudo ufw allow 2222/tcp. - Recarga las reglas del cortafuegos para aplicar los cambios:
sudo ufw reload.
Método 3: Verificar el Puerto y el Archivo de Configuración
Si el servicio corre pero sigue rechazando la conexión, revisa el archivo de configuración de OpenSSH.
- Abre el archivo de configuración con permisos de superusuario:
sudo nano /etc/ssh/sshd_config. - Busca la línea que define el puerto (
Port 22) y asegúrate de que no esté comentada con un asterisco o almohadilla. - Guarda los cambios y reinicia el demonio SSH para aplicar la nueva configuración:
sudo systemctl restart ssh.