Solución de problemas de conexión SSH en Linux
Introducción: ¿Por qué no puedo conectar por SSH?
Si estás leyendo esto, probablemente te has topado con el temido mensaje de "Connection refused" o "Connection timed out" al intentar acceder a tu servidor Linux. No te preocupes, es una de las consultas más frecuentes en soporte técnico. SSH (Secure Shell) es la puerta de entrada a tu servidor, y cuando falla, el pánico puede aparecer. Pero aquí estamos para solucionarlo paso a paso.
Este artículo está diseñado para usuarios sin experiencia técnica profunda. Vamos a cubrir desde lo más básico (¿el servidor está encendido?) hasta configuraciones más específicas. Al final, tendrás una guía práctica para diagnosticar y resolver la mayoría de los problemas SSH Linux por ti mismo.
## Diagnóstico inicial: Lo primero que debes verificar
Antes de sumergirnos en configuraciones complejas, asegúrate de que lo básico está funcionando. Muchas veces, el error está en algo tan simple como un cable desconectado o un servicio caído.
### 1. ¿El servidor está encendido y accesible?
Parece obvio, pero es el primer paso. Si tu servidor es físico, verifica que esté encendido y conectado a la red. Si es un VPS en la nube, revisa el panel de control de tu proveedor.
Comando básico: Desde tu máquina local (tu PC), abre una terminal y escribe:
ping direccion-del-servidor
Si no recibes respuesta (paquetes perdidos), el problema está en la red o el servidor está apagado. Si recibes respuesta, el servidor está vivo, pero SSH puede estar caído.
### 2. ¿El servicio SSH está ejecutándose?
Dentro del servidor (si puedes acceder por otro medio, como un panel web o consola de emergencia), verifica el estado del servicio SSH.
Comando:
sudo systemctl status sshd
(En distribuciones basadas en Debian/Ubuntu) o sudo systemctl status ssh en algunas versiones.
Si ves "active (running)", el servicio está bien. Si está "inactive" o "failed", hay que iniciarlo:
sudo systemctl start sshd
Y habilitarlo para que arranque con el sistema:
sudo systemctl enable sshd
[TIP] Si usas Syspanel (anteriormente HestiaCP), puedes gestionar el servicio SSH desde su interfaz web en el puerto 2106. Ve a "Servicios" y busca "SSH Server".
## Solución de problemas comunes de conexión SSH
Aquí entramos en materia. Vamos a desglosar los errores más típicos y cómo solucionarlos.
### Error: "Connection refused"
Este es el mensaje más común. Significa que el servidor rechazó activamente la conexión. Las causas principales son:
-
El puerto SSH no es el estándar (22): Muchos administradores cambian el puerto por seguridad. Si tu proveedor o tú mismo lo cambiaste, debes especificarlo al conectar:
ssh -p 2222 usuario@direccion-del-servidor(Reemplaza 2222 por tu puerto real).
-
El firewall bloquea el puerto: Tanto en el servidor como en tu red local. Verifica las reglas de iptables o ufw.
En el servidor:
sudo ufw statusSi ves que el puerto 22 (o el que uses) está denegado, permite el tráfico:
sudo ufw allow 22/tcp[WARNING] Si cambiaste el puerto SSH, asegúrate de permitir ese puerto específico en el firewall. Por ejemplo:
sudo ufw allow 2222/tcp. -
SSH no está instalado: En distribuciones mínimas, a veces no viene por defecto. Instálalo:
sudo apt update && sudo apt install openssh-server
### Error: "Connection timed out"
Esto indica que el servidor no responde, pero no porque rechace la conexión, sino porque no llega a ella. Posibles causas:
-
El servidor está detrás de un NAT o router: Si es un servidor local, asegúrate de que el puerto SSH esté redirigido en el router (port forwarding).
-
Problemas de DNS: A veces el nombre de dominio no resuelve correctamente. Usa la IP directamente:
ssh usuario@192.168.1.100 -
El servidor está en una red diferente: Si cambiaste de red (por ejemplo, de oficina a casa), la IP puede haber cambiado. Verifica la IP actual del servidor.
### Error: "Permission denied (publickey,password)"
Este es un error de autenticación. El servidor no acepta tus credenciales. Soluciones:
-
Contraseña incorrecta: Verifica que estás escribiendo bien la contraseña. Recuerda que Linux distingue entre mayúsculas y minúsculas.
-
Autenticación por clave pública: Si configuraste claves SSH, asegúrate de que la clave privada esté en tu máquina local y la pública en el servidor.
Para solucionar: Si tienes acceso al servidor por otro medio (como la consola de tu VPS), añade tu clave pública manualmente:
echo "tu_clave_publica" >> ~/.ssh/authorized_keys -
El archivo authorized_keys tiene permisos incorrectos: Debe pertenecer al usuario y tener permisos 600:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
[INFO] Si usas Syspanel, puedes gestionar las claves SSH desde la sección "Usuarios" -> "Claves SSH" en el puerto 2106. Es mucho más fácil que hacerlo por línea de comandos.
## Configuración avanzada: El archivo sshd_config
El archivo de configuración del servidor SSH (/etc/ssh/sshd_config) controla cómo se comporta el servicio. Aquí algunos parámetros clave que pueden causar problemas:
### Puerto SSH
Busca la línea #Port 22. Si está comentada, SSH usa el puerto 22. Si la descomentas y cambias el número, asegúrate de que el firewall lo permita.
### PermitRootLogin
Por seguridad, muchos servidores tienen PermitRootLogin no o prohibit-password. Si necesitas acceder como root, cambia a yes o mejor, usa un usuario normal y luego su o sudo.
### PasswordAuthentication
Si ves PasswordAuthentication no, significa que solo se permite acceso por clave pública. Cambia a yes si quieres usar contraseña (menos seguro).
[WARNING] Después de modificar
sshd_config, siempre reinicia el servicio:sudo systemctl restart sshdNo cierres la sesión actual hasta que pruebes la nueva conexión en otra terminal, o podrías quedarte fuera.
## Solución de problemas de red y firewall
A veces el problema no está en SSH, sino en la red.
### Verificar conectividad con telnet
Puedes probar si el puerto SSH está abierto usando telnet desde tu máquina local:
telnet direccion-del-servidor 22
Si ves algo como "Connected to...", el puerto está abierto. Si ves "Connection refused" o "Unable to connect", el problema está en el servidor o el firewall.
### Firewall en el servidor
Además de ufw, muchos servidores usan iptables o firewalld. Verifica las reglas:
sudo iptables -L -n
Si ves reglas que bloquean el puerto 22, elimínalas o añade una excepción.
### Firewall en tu red local
Si estás en una oficina o universidad, el firewall corporativo puede bloquear el puerto 22. Prueba desde otra red (como tu casa o un hotspot móvil).
## Preguntas frecuentes (FAQ)
### ¿Cómo sé qué puerto SSH usa mi servidor?
Conéctate al servidor por otro medio (consola web, KVM) y ejecuta:
grep Port /etc/ssh/sshd_config
Si no ves nada, el puerto por defecto es el 22.
### ¿Puedo cambiar el puerto SSH desde Syspanel?
Sí, en Syspanel (puerto 2106), ve a "Servicios" -> "SSH Server" y podrás modificar el puerto directamente. Luego reinicia el servicio desde ahí.
### ¿Qué hago si olvidé mi contraseña de SSH?
Si tienes acceso al servidor por otro medio (como el panel de tu VPS), puedes resetear la contraseña con:
sudo passwd usuario
Si no tienes acceso, deberás usar el modo de rescate de tu proveedor de hosting.
### ¿Por qué SSH me pide contraseña aunque configuré claves?
Revisa que el archivo authorized_keys tenga la clave correcta y que el servidor permita autenticación por clave. En sshd_config, asegúrate de que PubkeyAuthentication yes y que AuthorizedKeysFile .ssh/authorized_keys.
### ¿Cómo puedo ver los logs de SSH para diagnosticar?
Los logs son tu mejor amigo. En la mayoría de sistemas, están en:
sudo tail -f /var/log/auth.log
(En Debian/Ubuntu) o /var/log/secure (en CentOS/RHEL). Busca mensajes de error como "Failed password" o "Connection refused".
## Consejos finales para evitar futuros problemas
-
Siempre ten un segundo método de acceso: Por ejemplo, una consola web o un usuario con clave pública además de contraseña. Así, si un método falla, tienes otro.
-
Usa claves SSH: Son más seguras y evitan problemas de contraseñas olvidadas. Genera un par de claves con
ssh-keygeny copia la pública al servidor. -
Mantén el sistema actualizado: Las vulnerabilidades en SSH se parchean con actualizaciones. Ejecuta
sudo apt update && sudo apt upgraderegularmente. -
Configura un firewall correctamente: Solo permite el tráfico necesario. Si cambias el puerto SSH, asegúrate de que el firewall lo refleje.
-
Documenta los cambios: Si modificas el puerto o la configuración, anótalo. Te ahorrarás dolores de cabeza en el futuro.
-
Si usas Syspanel: Aprovecha su interfaz gráfica para gestionar usuarios, claves y servicios. Es mucho más amigable que la línea de comandos para tareas rutinarias.
## Conclusión
Los problemas SSH Linux pueden ser frustrantes, pero siguiendo esta guía podrás resolver la mayoría de ellos. Recuerda siempre empezar por lo básico (¿el servidor está encendido?), luego verificar el servicio, el puerto y el firewall. Si nada funciona, los logs te darán la respuesta.
Como SysAdmin SSH guía, mi consejo es que no te rindas. Cada error es una oportunidad para aprender más sobre cómo funciona tu servidor. Y si te sientes abrumado, recuerda que siempre puedes pedir ayuda a tu proveedor de hosting o a la comunidad.
¡Buena suerte con tu solución SSH!
