Introducción al error Connection Refused en SSH
El protocolo SSH (Secure Shell) es fundamental para la administración remota de servidores Linux. Sin embargo, uno de los errores más frustrantes que enfrentan los administradores de sistemas y desarrolladores es el temido ssh: connect to host [IP] port 22: Connection Refused. Este mensaje indica que la máquina remota ha rechazado activamente la conexión en el puerto especificado, impidiendo el acceso a la terminal.
Causas principales del error SSH en Linux
Antes de aplicar cualquier solución, es importante comprender por qué ocurre este problema de red y conectividad:
- El servicio SSH (demonio OpenSSH) no está instalado o se encuentra detenido en el servidor remoto.
- El cortafuegos (UFW, iptables o firewalld) está bloqueando el tráfico entrante en el puerto SSH.
- El servicio SSH está configurado para escuchar en un puerto diferente al predeterminado (puerto 22).
- Existen problemas de red o la dirección IP del servidor es incorrecta.
Método 1: Verificar y reiniciar el servicio SSH en el servidor
Si tienes acceso físico a la máquina o acceso a través de una consola de rescate del proveedor de hosting, el primer paso es comprobar el estado del servicio OpenSSH.
- Inicia sesión en la máquina Linux con una terminal local o consola de recuperación.
- Ejecuta el siguiente comando para comprobar el estado actual del servicio SSH:
sudo systemctl status ssh(en distribuciones basadas en Debian/Ubuntu) osudo systemctl status sshd(en CentOS/RHEL/Fedora). - Si el servicio está detenido o inactivo, arráncalo con el siguiente comando:
sudo systemctl start ssh - Habilita el servicio para que se ejecute automáticamente al iniciar el sistema:
sudo systemctl enable ssh
Método 2: Comprobar y configurar el cortafuegos (Firewall)
A menudo, las reglas del cortafuegos bloquean las conexiones entrantes al puerto SSH por motivos de seguridad.
- Si utilizas UFW (Uncomplicated Firewall) en Ubuntu o Debian, verifica su estado ejecutando:
sudo ufw status - Si el cortafuegos está activo y no permite conexiones SSH, abre el puerto ejecutando:
sudo ufw allow ssho especificando el puerto si fue modificado:sudo ufw allow 22/tcp - Recarga las reglas del cortafuegos para aplicar los cambios:
sudo ufw reload - Si utilizas Firewalld (en sistemas RedHat), ejecuta los siguientes comandos:
sudo firewall-cmd --permanent --add-service=sshsudo firewall-cmd --reload
Método 3: Verificar el archivo de configuración de SSH y el puerto
Si el servicio corre pero fue reconfigurado en un puerto personalizado, tu cliente SSH intentará conectarse por defecto al puerto 22, generando el rechazo.
- Abre el archivo de configuración del demonio SSH con un editor de texto como nano:
sudo nano /etc/ssh/sshd_config - Busca la línea que comienza con
#Port 22oPort [número]. Asegúrate de que el puerto esté descomentado (sin el símbolo #) y sea el correcto. - Si modificaste el puerto, guarda el archivo (en nano presiona
Ctrl+O, luegoEntery sal conCtrl+X). - Reinicia el servicio SSH para aplicar la nueva configuración:
sudo systemctl restart ssh - Para conectarte desde tu máquina cliente especificando el puerto correcto, utiliza la siguiente sintaxis:
code>ssh usuario@tu_servidor -p [numero_de_puerto]