- 1 1. Introducción
- 2 2. Configuración básica de SSH
- 3 Conclusión
- 4 3. Fortalecimiento de la seguridad SSH
- 5 Conclusión
- 6 4. Configuración avanzada de SSH
- 7 Conclusión
- 8 5. Solución de problemas de SSH
- 9 Conclusión
- 10 6. Preguntas frecuentes (FAQ)
- 10.1 6.1 ¿Cómo Solucionar Problemas de Tiempo de Espera en SSH?
- 10.2 6.2 ¿Qué Hacer Si Olvida la Contraseña de SSH?
- 10.3 6.3 ¿Cómo Usar SSH en Windows?
- 10.4 6.4 ¿Cómo Configurar SSH en Ubuntu WSL?
- 10.5 6.5 Mejores Prácticas de Seguridad Adicionales
- 10.6 6.6 ¿Cómo Monitorear Registros de SSH en Tiempo Real?
- 10.7 6.7 Consejos para Usar SSH de Manera Más Cómoda
- 11 Conclusión
1. Introducción
Configurar SSH en Ubuntu es esencial para administrar servidores remotos. SSH (Secure Shell) es un protocolo que brinda comunicación cifrada segura, permitiendo a los usuarios acceder a los servidores de forma remota, ejecutar comandos y transferir archivos.
Este artículo explica cómo configurar SSH en Ubuntu, desde los pasos básicos de instalación hasta medidas de seguridad avanzadas.
1.1 ¿Por qué configurar SSH en Ubuntu?
1.1.1 ¿Qué es SSH?
SSH (Secure Shell) es un protocolo que permite comunicación segura a través de una red. Se utiliza habitualmente para iniciar sesión en servidores remotos, transferir archivos y crear túneles (reenvío de puertos). A diferencia de Telnet o FTP tradicionales, SSH cifra toda la comunicación, proporcionando una seguridad robusta.
1.1.2 Cuándo se necesita SSH en Ubuntu
Los escenarios más comunes en los que se usa SSH para gestionar Ubuntu de forma remota incluyen:
- Administración de servidores en la nube : los servidores Linux en AWS, GCP, Vultr y otros suelen accederse mediante SSH.
- Operaciones remotas en entornos LAN : acceso remoto a servidores internos o máquinas de desarrollo.
- Gestión de dispositivos IoT : control de sistemas embebidos como Raspberry Pi de forma remota.
De forma predeterminada, el servidor SSH está deshabilitado en Ubuntu, por lo que debe instalarse y configurarse manualmente para habilitar el acceso SSH.
2. Configuración básica de SSH
Para usar SSH en Ubuntu, es necesario instalar el servidor SSH (OpenSSH) y configurarlo adecuadamente. Esta sección explica cómo instalar SSH, ajustar configuraciones básicas, configurar el firewall y conectarse al servidor.
2.1 Instalación y arranque de OpenSSH
2.1.1 ¿Qué es OpenSSH?
OpenSSH (Open Secure Shell) es una implementación de código abierto del protocolo SSH. Soporta conexiones remotas, transferencias seguras de archivos (SCP y SFTP) y reenvío de puertos.
2.1.2 Instalación de OpenSSH
Ubuntu no incluye un servidor SSH por defecto, por lo que se instala con el siguiente comando:
sudo apt update && sudo apt install -y openssh-server
Esto actualiza las listas de paquetes e instala el servidor OpenSSH.
2.1.3 Iniciar SSH y habilitar el arranque automático
Tras la instalación, inicie el servidor SSH y habilite su inicio automático:
sudo systemctl enable --now ssh
La opción enable garantiza que SSH se inicie automáticamente al arrancar el sistema operativo.
2.1.4 Verificar el estado de SSH
Compruebe que SSH está en ejecución:
systemctl status ssh
Si la salida muestra active (running), SSH funciona normalmente:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago
Si muestra inactive (dead) o failed, inicie SSH manualmente:
sudo systemctl start ssh
2.2 Configuración del firewall (UFW)
Ubuntu incluye un firewall sencillo llamado ufw (Uncomplicated Firewall). Es necesario permitir las conexiones SSH a través de él.
2.2.1 Verificar el estado de UFW
sudo ufw status
Ejemplo de salida (inactive):
Status: inactive
Ejemplo de salida (active):
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2.2.2 Permitir SSH
sudo ufw allow ssh
O de forma explícita:
sudo ufw allow 22/tcp
2.2.3 Habilitar UFW
sudo ufw enable
2.2.4 Verificar las reglas de UFW
sudo ufw status verbose
Ejemplo:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
2.3 Métodos básicos de conexión SSH
Una vez que SSH está en funcionamiento, conéctese desde una máquina cliente.
2.3.1 Conexión desde Linux/macOS
ssh username@server-ip-address
Ejemplo:
ssh user@192.168.1.100
Es posible que vea una advertencia de seguridad en la primera conexión:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
Escriba yes para continuar.
2.3.2 Conexión desde Windows
Puede usar PowerShell o PuTTY.
Usando PowerShell (Windows 10+ incluye SSH):
ssh username@server-ip-address
Usando PuTTY:
- Descargue PuTTY desde el sitio oficial
- Abra PuTTY e ingrese la IP del servidor en
Host Name (or IP address) - Seleccione
SSHcomo tipo de conexión - Haga clic en Open e inicie sesión
Conclusión
Esta sección cubrió los conceptos básicos para configurar SSH en Ubuntu:
- Cómo instalar y iniciar OpenSSH
- Cómo permitir conexiones SSH con UFW
- Cómo conectarse desde Linux/macOS y Windows
3. Fortalecimiento de la seguridad SSH
SSH es potente, pero dejarlo con la configuración predeterminada aumenta los riesgos de seguridad. Los atacantes a menudo intentan ataques de fuerza bruta o escaneos de puertos. Fortalecer la seguridad de SSH es esencial.
3.1 Desactivar el inicio de sesión como root
El inicio de sesión como root brinda control total del sistema y es un objetivo principal para los atacantes. Desactivarlo mejora la seguridad.
3.1.1 Pasos
- Edite el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
- Cambie la línea a:
PermitRootLogin no
- Reinicie SSH:
sudo systemctl restart ssh
- Confirme el cambio:
sudo grep PermitRootLogin /etc/ssh/sshd_config
Si la salida es PermitRootLogin no, la configuración se ha aplicado.
3.2 Desactivar la autenticación por contraseña y usar autenticación con clave
La autenticación con clave pública es más segura que las contraseñas y reduce los riesgos de ataques de fuerza bruta.
3.2.1 Creación de claves SSH
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
Esto genera dos archivos:
- id_rsa (clave privada) — guárdela localmente, nunca la comparta
- id_rsa.pub (clave pública) — cárguela al servidor
3.2.2 Carga de la clave pública
ssh-copy-id username@server-ip-address
3.2.3 Desactivar la autenticación por contraseña
sudo nano /etc/ssh/sshd_config
Edite:
PasswordAuthentication no
Reinicie SSH:
sudo systemctl restart ssh
3.3 Permitir acceso SSH solo a usuarios específicos
Para mejorar la seguridad de SSH, puede restringir el acceso de modo que solo ciertos usuarios puedan iniciar sesión.
3.3.1 Pasos de configuración
- Abra el archivo de configuración de SSH
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Añada los usuarios que pueden acceder vía SSH:
AllowUsers username1 username2
- Reinicie SSH para aplicar los cambios:
sudo systemctl restart ssh
3.4 Cambiar el puerto de SSH
Debido a que el puerto 22 es frecuentemente objetivo de atacantes, cambiar el puerto predeterminado puede mejorar la seguridad.
3.4.1 Pasos de configuración
- Abra el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
- Modifique la configuración del puerto, por ejemplo:
Port 2200
- Reinicie SSH:
sudo systemctl restart ssh
3.4.2 Actualizando la configuración del firewall
Si cambia el puerto, actualice UFW:
sudo ufw allow 2200/tcp
Verifique la nueva regla:
sudo ufw status
3.5 Prevenir ataques de fuerza bruta con Fail2Ban
Fail2Ban detecta intentos fallidos de inicio de sesión y bloquea la IP atacante durante un tiempo especificado.
3.5.1 Instalar Fail2Ban
sudo apt install fail2ban -y
3.5.2 Crear un archivo de configuración
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Abra el archivo:
sudo nano /etc/fail2ban/jail.local
Modifique la configuración:
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600
3.5.3 Reiniciar Fail2Ban
sudo systemctl restart fail2ban
3.5.4 Verificar lista de baneos
sudo fail2ban-client status sshd
Conclusión
Esta sección explicó métodos para mejorar la seguridad de SSH:
- Desactivar el inicio de sesión como root
- Desactivar la autenticación por contraseña y habilitar la autenticación con clave
- Restringir el acceso SSH a usuarios específicos
- Cambiar el puerto SSH
- Usar Fail2Ban para bloquear intentos no autorizados
Implementar estas configuraciones ayuda a crear un entorno SSH seguro.

4. Configuración avanzada de SSH
Una vez completada la configuración básica de SSH y el endurecimiento de la seguridad, puedes pasar a funciones avanzadas para mejorar la flexibilidad y la seguridad. Esta sección cubre la gestión de ssh.socket (Ubuntu 22.10+), túneles SSH, la escucha en varios puertos y el control de acceso basado en IP.
4.1 Uso de ssh.socket en Ubuntu 22.10+
En Ubuntu 22.10+, SSH puede ser gestionado por ssh.socket en lugar de ssh.service. Esta activación basada en sockets inicia SSH solo cuando es necesario, ahorrando recursos del sistema.
4.1.1 Verificar el estado de ssh.socket
sudo systemctl status ssh.socket
Ejemplo de salida (habilitado):
● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC
4.1.2 Habilitar o deshabilitar ssh.socket
Habilitar el socket:
sudo systemctl enable --now ssh.socket
Volver al ssh.service clásico:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service
4.2 Túneles SSH (Redirección de puertos)
Los túneles SSH establecen canales de comunicación seguros entre sistemas locales y remotos.
4.2.1 Redirección de puerto local
Útil para conectar de forma segura a bases de datos remotas o servicios internos.
Ejemplo: Acceder a un servidor MySQL remoto en el puerto 3306
ssh -L 3306:localhost:3306 username@server-ip-address
4.2.2 Redirección de puerto inversa
Exponer servicios locales a través de un servidor remoto.
Ejemplo: Publicar un servidor web local en el puerto remoto 8080
ssh -R 8080:localhost:80 username@server-ip-address
4.2.3 Redirección de puerto dinámica (proxy SOCKS)
Usar SSH como proxy SOCKS para navegación anónima.
ssh -D 1080 username@server-ip-address
4.3 Escucha en varios puertos
SSH puede escuchar en más de un puerto para mayor flexibilidad en diferentes entornos de red.
4.3.1 Pasos de configuración
- Editar
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
- Añadir varias líneas
Port:Port 22 Port 2200
- Reiniciar SSH :
sudo systemctl restart ssh
- Permitir el nuevo puerto con UFW :
sudo ufw allow 2200/tcp
4.4 Permitir SSH solo desde direcciones IP específicas
Restringir el acceso SSH por dirección IP ofrece un control de seguridad sólido.
4.4.1 Configurar /etc/hosts.allow
sudo nano /etc/hosts.allow
Añadir una dirección IP permitida:
sshd: 192.168.1.100
4.4.2 Configurar /etc/hosts.deny
sudo nano /etc/hosts.deny
Denegar a todos los demás:
sshd: ALL
Conclusión
Esta sección cubrió temas de configuración avanzada de SSH:
- Gestión de
ssh.socketen Ubuntu 22.10+ - Uso de túneles SSH (redirección de puertos)
- Escucha en varios puertos SSH
- Restricción del acceso SSH a direcciones IP específicas
Aplicar estas configuraciones mejora tanto la seguridad como la usabilidad.
5. Solución de problemas de SSH
Incluso con una configuración correcta, las conexiones SSH pueden fallar ocasionalmente. Esta sección explica problemas comunes de SSH y sus soluciones.
5.1 Cuando SSH no puede conectarse
Si SSH devuelve Connection refused o se agota el tiempo, las causas posibles incluyen problemas del servicio, configuración incorrecta del puerto o restricciones del firewall.
5.1.1 El servicio SSH no está en ejecución
sudo systemctl status ssh
Solución:
- Si está
inactiveofailed, reinicia SSH:sudo systemctl restart ssh
- Habilita el inicio automático:
sudo systemctl enable ssh
5.1.2 Puerto SSH no está abierto
ssh -p 2200 username@server-ip-address
Verificar puertos abiertos:
sudo netstat -tulnp | grep ssh
Or:
ss -tulnp | grep ssh
5.1.3 Firewall (UFW) Bloqueando SSH
sudo ufw status
Permitir SSH:
sudo ufw allow 22/tcp
Si se usa un puerto personalizado:
sudo ufw allow 2200/tcp
5.2 Errores de Autenticación
5.2.1 Nombre de Usuario o Contraseña Incorrectos
ssh username@server-ip-address
5.2.2 Clave Pública No Instalada Correctamente
cat ~/.ssh/authorized_keys
Verifique que coincida con el id_rsa.pub local.
5.2.3 Permisos Incorrectos en el Directorio .ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
También asegúrese de:
chmod 755 /home/username
5.3 Conexiones SSH Inestables o Desconexiones Inesperadas
5.3.1 Ajustar ClientAliveInterval
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
5.3.2 Ajustar Configuraciones del Cliente Local
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
5.4 Visualizar Registros de SSH
5.4.1 Ver Registros en Tiempo Real
sudo journalctl -u ssh -f
5.4.2 Ver Registros Anteriores
sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log
Conclusión
Esta sección explicó problemas comunes de SSH y cómo resolverlos:
- Verificar si el servicio SSH está en ejecución
- Verificar puertos abiertos
- Comprobar configuraciones del firewall
- Asegurar autenticación correcta con claves
- Corregir problemas de tiempo de espera y desconexiones
- Analizar registros de SSH
La mayoría de los problemas de SSH provienen de configuraciones erróneas o restricciones de red. Use estos pasos de solución de problemas para resolver los inconvenientes de manera eficiente.
6. Preguntas frecuentes (FAQ)
Esta sección responde preguntas comunes relacionadas con el uso y la configuración de SSH.
6.1 ¿Cómo Solucionar Problemas de Tiempo de Espera en SSH?
6.1.1 Configuraciones del Lado del Servidor
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
6.1.2 Configuraciones del Lado del Cliente
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
6.2 ¿Qué Hacer Si Olvida la Contraseña de SSH?
6.2.1 Si Tiene Acceso Físico
- Inicie en modo de usuario único (seleccione
recovery modedesde GRUB) - Restablezca la contraseña:
passwd username
- Reinicie el sistema
6.2.2 Si No Es Posible el Acceso Físico (VPS en la Nube)
- Use la consola de VPS proporcionada por el servicio de alojamiento
- Use autenticación con clave pública
6.3 ¿Cómo Usar SSH en Windows?
6.3.1 Usando PowerShell
ssh username@server-ip-address
6.3.2 Usando PuTTY
- Descargue e instale PuTTY
- Ingrese la dirección IP del servidor en
Host Name - Seleccione
SSHcomo tipo de conexión - Inicie sesión con nombre de usuario y contraseña
6.4 ¿Cómo Configurar SSH en Ubuntu WSL?
6.4.1 Instalar el Servidor SSH
sudo apt update && sudo apt install openssh-server
6.4.2 Modificar Configuraciones de SSH
PasswordAuthentication yes
Inicie SSH manualmente (WSL no usa systemd):
sudo service ssh start
6.5 Mejores Prácticas de Seguridad Adicionales
6.5.1 Usar Fail2Ban
sudo apt install fail2ban -y
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban
6.5.2 Cambiar el Puerto de SSH
Port 2200
sudo ufw allow 2200/tcp
6.6 ¿Cómo Monitorear Registros de SSH en Tiempo Real?
sudo journalctl -u ssh -f
sudo cat /var/log/auth.log | grep ssh
6.7 Consejos para Usar SSH de Manera Más Cómoda
6.7.1 Usar .ssh/config para Inicios de Sesión Simples
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsa
Luego conéctese con:
ssh myserver
6.7.2 Usar ssh-agent
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Conclusión
Esta sección resumió preguntas frecuentes relacionadas con SSH:
- Cómo solucionar problemas de tiempo de espera de SSH
- Cómo recuperar una contraseña olvidada
- Cómo usar SSH en Windows y WSL
- Mejores prácticas de seguridad
- Cómo revisar los registros de SSH
- Consejos para hacer SSH más conveniente usando
.ssh/config
Al aplicar estas técnicas, puedes crear un entorno SSH seguro y eficiente y gestionar servidores remotos sin problemas.



