- 1 1. Introducción
- 2 2. Configuración básica de SSH
- 3 Resumen
- 4 3. Reforzar la seguridad de SSH
- 5 Resumen
- 6 4. Configuración avanzada de SSH
- 7 Resumen
- 8 5. Solución de problemas con SSH
- 9 Resumen
- 10 6. FAQ (Preguntas frecuentes)
- 10.1 6.1 ¿Qué hacer si la conexión SSH se corta por timeout?
- 10.2 6.2 ¿Qué hacer si olvidé la contraseña y no puedo conectarme por SSH?
- 10.3 6.3 ¿Cómo usar SSH en Windows?
- 10.4 6.4 ¿Cómo configurar SSH en Ubuntu WSL (Windows Subsystem for Linux)?
- 10.5 6.5 ¿Qué medidas de seguridad adicionales aplicar después de configurar SSH?
- 10.6 6.6 ¿Cómo monitorear los logs de SSH en tiempo real en Ubuntu?
- 10.7 6.7 ¿Cómo hacer que SSH sea más práctico?
- 11 Resumen
- 12 Artículos relacionados
1. Introducción
Configurar SSH en Ubuntu es fundamental para la administración de servidores remotos. SSH (Secure Shell) es un protocolo que proporciona comunicación cifrada y segura, ampliamente utilizado para acceder a servidores a distancia, ejecutar comandos y transferir archivos.
En este artículo, explicaremos en detalle cómo configurar SSH en Ubuntu, desde los pasos básicos de instalación hasta medidas avanzadas de seguridad.
1.1 Razones para configurar SSH en Ubuntu
1.1.1 ¿Qué es SSH?
SSH (Secure Shell) es un protocolo diseñado para garantizar comunicaciones seguras a través de la red. Generalmente se utiliza para iniciar sesión en servidores remotos, transferir archivos y realizar túneles (port forwarding). A diferencia de Telnet o FTP, SSH cifra el contenido de la comunicación, lo que lo convierte en una opción mucho más segura.
1.1.2 Casos en los que se necesita SSH en Ubuntu
Los escenarios en los que se requiere gestionar Ubuntu de forma remota incluyen los siguientes:
- Administración de servidores en la nube: En servicios como AWS, GCP o Vultr, se utiliza SSH para conectarse remotamente al servidor.
- Operaciones remotas en entornos LAN: Acceder mediante SSH a servidores internos o máquinas de desarrollo para trabajar de manera remota.
- Gestión de dispositivos IoT: Controlar de forma remota dispositivos embebidos como Raspberry Pi.
Por defecto, Ubuntu no habilita el servidor SSH. Por ello, es necesario instalarlo manualmente y configurarlo de manera adecuada.
2. Configuración básica de SSH
Para utilizar SSH en Ubuntu, es necesario instalar el servidor SSH (OpenSSH) y realizar los ajustes correspondientes. En esta sección explicaremos cómo instalar SSH, configurarlo de forma básica, ajustar el firewall y conectarse al servidor.
2.1 Instalación y activación de OpenSSH
2.1.1 ¿Qué es OpenSSH?
OpenSSH (Open Secure Shell) es un software de código abierto que implementa el protocolo SSH. Además de la conexión remota, ofrece funciones como transferencia segura de archivos (SCP o SFTP) y reenvío de puertos.
2.1.2 Instalación de OpenSSH
En Ubuntu, el servidor SSH no viene instalado por defecto. Para instalarlo, ejecute el siguiente comando:
sudo apt update && sudo apt install -y openssh-serverEste comando actualiza la lista de paquetes e instala el servidor OpenSSH.
2.1.3 Inicio del servidor SSH y configuración de inicio automático
Una vez completada la instalación, inicie el servidor SSH y habilite su arranque automático.
sudo systemctl enable --now sshLa opción enable permite que el servicio SSH se inicie automáticamente al arrancar el sistema operativo.
2.1.4 Verificación del funcionamiento de SSH
Para comprobar si el servidor SSH funciona correctamente, ejecute:
systemctl status sshSi aparece una salida similar a la siguiente, significa que el servidor SSH está en ejecución:
● 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 agoSi aparece inactive (dead) o failed, puede iniciarlo manualmente con:
sudo systemctl start ssh2.2 Configuración del firewall (UFW)
En Ubuntu, se incluye un firewall sencillo llamado ufw (Uncomplicated Firewall). Para permitir conexiones SSH, es necesario configurarlo adecuadamente.
2.2.1 Verificar el estado de UFW
Primero, verifique el estado actual del firewall:
sudo ufw statusEjemplo de salida (UFW deshabilitado)
Status: inactiveEjemplo de salida (UFW habilitado)
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere2.2.2 Permitir el tráfico SSH
Para permitir el puerto predeterminado de SSH 22, ejecute:
sudo ufw allow sshO bien, especifique el número de puerto explícitamente:
sudo ufw allow 22/tcp2.2.3 Activar UFW
Si UFW está deshabilitado, actívelo con:
sudo ufw enableAl habilitar UFW, todo el tráfico entrante será bloqueado por defecto, por lo que debe asegurarse de haber permitido previamente SSH.
2.2.4 Confirmar la configuración
Verifique nuevamente que la configuración del firewall esté aplicada:
sudo ufw status verboseEjemplo de salida
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)Si aparece esta salida, significa que las conexiones SSH están permitidas.
2.3 Métodos básicos de conexión a SSH
Una vez confirmado que el servidor SSH está en ejecución, probaremos la conexión desde un PC cliente.
2.3.1 Conexión desde Linux/macOS
En Linux o macOS, abra la terminal y ejecute:
ssh usuario@IP_del_servidorEjemplo:
ssh user@192.168.1.100En la primera conexión, puede aparecer un mensaje de advertencia como el siguiente:
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 y presione Enter para establecer la conexión.
2.3.2 Conexión desde Windows
En Windows se puede utilizar PowerShell o PuTTY para conectarse mediante SSH.
Usando PowerShell
Desde Windows 10 en adelante, PowerShell incluye un cliente SSH integrado. Ejecute:
ssh usuario@IP_del_servidorUsando PuTTY
- Descargue e instale PuTTY desde el sitio oficial.
- Abra PuTTY y escriba la dirección IP del servidor en
Host Name (or IP address). - En
Connection type, seleccioneSSHy haga clic enOpen. - Introduzca el nombre de usuario y la contraseña.
Resumen
En esta sección hemos explicado los pasos básicos para configurar SSH en Ubuntu:
- Instalar y activar OpenSSH
- Configurar UFW para permitir SSH
- Conectarse desde Linux/macOS y Windows
3. Reforzar la seguridad de SSH
SSH es una herramienta muy útil para conexiones remotas, pero usarla sin ajustes adicionales puede aumentar los riesgos de seguridad. Los atacantes suelen emplear ataques de fuerza bruta o escaneo de puertos para dirigirse a servidores SSH. Por ello, es fundamental aplicar configuraciones de seguridad adecuadas para construir un entorno más seguro.
3.1 Deshabilitar el inicio de sesión como root
De forma predeterminada, en algunos casos la configuración de SSH en Ubuntu permite el acceso como usuario root. Como la cuenta root tiene privilegios totales sobre el sistema, suele ser un objetivo de los atacantes. Prohibir el inicio de sesión directo con root y usar cuentas de usuario normales mejora la seguridad.
3.1.1 Pasos de configuración
- Edite el archivo de configuración de SSH
/etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config- Busque la siguiente línea y cámbiela a
PermitRootLogin no.
PermitRootLogin no- Guarde el archivo y reinicie el servicio SSH.
sudo systemctl restart ssh- Verifique que el cambio esté aplicado:
sudo grep PermitRootLogin /etc/ssh/sshd_configSi el resultado es PermitRootLogin no, el ajuste se aplicó correctamente.
3.2 Deshabilitar autenticación por contraseña e implementar autenticación por clave pública
En SSH, la autenticación con claves públicas es más segura que la autenticación por contraseña. Con este método, no se introduce una contraseña; en su lugar, se utilizan pares de claves (pública y privada). Esto reduce el riesgo de ataques de fuerza bruta.
3.2.1 Generar un par de claves SSH
En el PC local, genere las claves SSH con:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsaAl finalizar, se habrán creado dos archivos:
- Clave privada (
id_rsa) → Se guarda en el PC local (no compartir nunca) - Clave pública (
id_rsa.pub) → Se copia al servidor
3.2.2 Transferir la clave pública al servidor
Use el siguiente comando para copiar la clave pública al servidor:
ssh-copy-id usuario@IP_del_servidor3.2.3 Deshabilitar la autenticación por contraseña
Abra el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_configBusque la línea correspondiente y cámbiela a:
PasswordAuthentication noReinicie SSH para aplicar los cambios:
sudo systemctl restart ssh3.3 Restringir el acceso SSH a usuarios específicos
Para reforzar la seguridad, se puede limitar qué usuarios están autorizados a conectarse vía SSH.
3.3.1 Pasos de configuración
- Abra el archivo de configuración
/etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config- Añada la siguiente línea indicando los usuarios permitidos:
AllowUsers usuario1 usuario2- Reinicie SSH para aplicar los cambios.
sudo systemctl restart ssh3.4 Cambiar el puerto de SSH
El puerto predeterminado de SSH (22) es un objetivo frecuente de ataques. Cambiarlo reduce el riesgo.
3.4.1 Pasos de configuración
- Abra el archivo de configuración de SSH.
sudo nano /etc/ssh/sshd_config- Busque la línea
Port 22y cámbiela, por ejemplo:
Port 2200- Guarde los cambios y reinicie SSH.
sudo systemctl restart ssh3.4.2 Actualizar la configuración del firewall
Después de cambiar el puerto, permita el nuevo en UFW:
sudo ufw allow 2200/tcpVerifique:
sudo ufw status3.5 Proteger contra ataques de fuerza bruta con Fail2Ban
Fail2Ban detecta intentos fallidos de inicio de sesión y bloquea temporalmente las IP ofensivas.
3.5.1 Instalar Fail2Ban
sudo apt install fail2ban -y3.5.2 Crear archivo de configuración
Copie el archivo predeterminado:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localAbra el archivo:
sudo nano /etc/fail2ban/jail.localAplique los siguientes ajustes:
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 36003.5.3 Reiniciar Fail2Ban
sudo systemctl restart fail2ban3.5.4 Verificar la lista de bloqueos
sudo fail2ban-client status sshdResumen
En esta sección hemos visto cómo reforzar la seguridad de SSH:
- Deshabilitar el inicio de sesión como root
- Desactivar contraseñas y usar autenticación con claves públicas
- Restringir el acceso a usuarios específicos
- Cambiar el puerto de SSH
- Usar Fail2Ban para bloquear accesos no autorizados
Con estas medidas se puede construir un entorno SSH más seguro.
4. Configuración avanzada de SSH
Una vez completada la configuración básica y reforzada la seguridad, el siguiente paso es aplicar ajustes avanzados para aprovechar SSH de manera más práctica y segura. En esta sección explicamos cómo gestionar ssh.socket en Ubuntu 22.10 y versiones posteriores, crear túneles SSH (port forwarding), configurar múltiples puertos de escucha y permitir solo IP específicas.
4.1 Uso de ssh.socket en Ubuntu 22.10 o posterior
En Ubuntu 22.10 o más reciente, la gestión del servicio SSH puede realizarse a través de ssh.socket en lugar de ssh.service. Con este mecanismo, el servicio se inicia dinámicamente al recibir solicitudes, lo que ayuda a ahorrar recursos.
4.1.1 Verificar el estado de ssh.socket
Ejecute:
sudo systemctl status ssh.socketEjemplo 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 UTC4.1.2 Habilitar o deshabilitar ssh.socket
Para habilitarlo si está desactivado:
sudo systemctl enable --now ssh.socketSi prefiere usar ssh.service de la manera tradicional:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service4.2 Túneles SSH (port forwarding)
Los túneles SSH permiten establecer comunicación segura entre el servidor remoto y el PC local, evitando el uso directo de redes externas.
4.2.1 Reenvío de puertos local
Muy útil para acceder de forma segura a bases de datos o servidores web remotos.
Ejemplo: acceder desde el PC local a MySQL en el puerto 3306 del servidor remoto
ssh -L 3306:localhost:3306 usuario@IP_del_servidor4.2.2 Reenvío de puertos inverso
Permite publicar servicios internos en un servidor remoto a través de SSH.
Ejemplo: exponer un servidor web local (puerto 80) en el puerto 8080 del servidor remoto
ssh -R 8080:localhost:80 usuario@IP_del_servidor4.2.3 Reenvío de puertos dinámico
Se puede usar SSH como un proxy SOCKS para navegar de forma anónima en Internet.
Ejemplo: crear un proxy SOCKS en el puerto 1080 del PC local
ssh -D 1080 usuario@IP_del_servidor4.3 Escuchar en múltiples puertos SSH
Por defecto, SSH escucha solo en un puerto (22). Configurarlo en varios puertos permite adaptarse a distintos entornos de red.
4.3.1 Pasos de configuración
- Edite el archivo
/etc/ssh/sshd_config.
sudo nano /etc/ssh/sshd_config- Añada las siguientes líneas:
Port 22
Port 2200- Reinicie SSH.
sudo systemctl restart ssh- Permita el nuevo puerto en UFW.
sudo ufw allow 2200/tcp4.4 Permitir SSH solo desde IP específicas
Una estrategia de seguridad adicional es limitar el acceso SSH únicamente a determinadas direcciones IP.
4.4.1 Configurar /etc/hosts.allow
Edite el archivo:
sudo nano /etc/hosts.allowAgregue la línea (sustituya 192.168.1.100 por la IP autorizada):
sshd: 192.168.1.1004.4.2 Configurar /etc/hosts.deny
Para rechazar todas las demás IP:
sudo nano /etc/hosts.denysshd: ALLDe esta forma, solo las IP incluidas en hosts.allow tendrán acceso SSH.
Resumen
En esta sección hemos explicado configuraciones avanzadas de SSH:
- Gestión de
ssh.socketen Ubuntu 22.10+ - Uso de túneles SSH (port forwarding) para comunicación segura
- Configuración de múltiples puertos de escucha
- Restricción de acceso SSH a IP específicas
Con estos ajustes, se mejora tanto la seguridad como la flexibilidad de SSH.
5. Solución de problemas con SSH
Incluso después de configurar SSH, pueden surgir situaciones en las que no se pueda establecer conexión. En esta sección organizamos los problemas más comunes al conectarse vía SSH y sus soluciones.
5.1 No se puede conectar a SSH
Si al intentar conectarse aparecen errores como Connection refused o timeout, las causas pueden ser varias.
5.1.1 El servicio SSH no está en ejecución
Es posible que el servidor SSH no se haya iniciado correctamente. Verifique el estado:
sudo systemctl status sshSolución:
- Si aparece
Active: inactive (dead)ofailed, reinicie el servicio.
sudo systemctl restart ssh- Para habilitar el inicio automático después del reinicio del sistema:
sudo systemctl enable ssh5.1.2 El puerto no está correctamente abierto
Si el puerto SSH ha sido cambiado, debe especificarlo al conectarse:
ssh -p 2200 usuario@IP_del_servidorPara confirmar los puertos en escucha:
sudo netstat -tulnp | grep sshO bien:
ss -tulnp | grep ssh5.1.3 Revisar la configuración del firewall (UFW)
Compruebe si UFW está bloqueando la comunicación SSH:
sudo ufw statusSolución si SSH no está permitido:
sudo ufw allow 22/tcpSi se cambió el puerto:
sudo ufw allow 2200/tcp5.2 Errores de autenticación
5.2.1 Nombre de usuario o contraseña incorrectos
Asegúrese de que el nombre de usuario utilizado sea correcto:
ssh usuario@IP_del_servidor5.2.2 La autenticación con clave pública no está bien configurada
Verifique que la clave pública esté en el servidor en ~/.ssh/authorized_keys:
cat ~/.ssh/authorized_keysDebe coincidir con el archivo local ~/.ssh/id_rsa.pub.
5.2.3 Permisos incorrectos en el directorio .ssh
SSH exige permisos estrictos en los archivos de claves y el directorio:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysTambién verifique los permisos del directorio personal:
chmod 755 /home/usuario5.3 Conexión SSH inestable o desconexiones frecuentes
Si la conexión SSH se corta tras un tiempo, puede deberse a configuraciones de tiempo de espera en el servidor o en el cliente.
5.3.1 Ajustar ClientAliveInterval
Edite el archivo /etc/ssh/sshd_config y añada o modifique:
ClientAliveInterval 60
ClientAliveCountMax 3Reinicie SSH:
sudo systemctl restart ssh5.3.2 Cambiar la configuración en el cliente
En el archivo local ~/.ssh/config, añada:
Host *
ServerAliveInterval 60
ServerAliveCountMax 35.4 Revisión de logs de SSH
Para solucionar problemas, es importante revisar los registros.
5.4.1 Ver registros en tiempo real
sudo journalctl -u ssh -f5.4.2 Consultar registros anteriores
sudo cat /var/log/auth.log | grep sshO filtrar mensajes de error específicos:
sudo grep "Failed password" /var/log/auth.logResumen
En esta sección hemos visto los problemas más frecuentes y sus soluciones:
- Verificar si el servicio SSH está en ejecución
- Comprobar que los puertos estén abiertos
- Revisar la configuración del firewall
- Confirmar la configuración de la autenticación con claves
- Ajustar parámetros de tiempo de espera
- Analizar los registros de SSH para identificar errores
Los problemas con SSH suelen deberse a errores de configuración o al entorno de red. Use esta guía para resolverlos rápidamente.
6. FAQ (Preguntas frecuentes)
En esta sección se presentan preguntas frecuentes sobre la configuración y el uso de SSH, junto con sus soluciones. Estos consejos le ayudarán a usar SSH de forma más cómoda y segura.
6.1 ¿Qué hacer si la conexión SSH se corta por timeout?
Si la conexión SSH se interrumpe tras un tiempo, pruebe estos ajustes.
6.1.1 Cambiar la configuración en el servidor
Edite /etc/ssh/sshd_config y añada:
ClientAliveInterval 60
ClientAliveCountMax 3Reinicie SSH:
sudo systemctl restart ssh6.1.2 Cambiar la configuración en el cliente
En el archivo local ~/.ssh/config añada:
Host *
ServerAliveInterval 60
ServerAliveCountMax 36.2 ¿Qué hacer si olvidé la contraseña y no puedo conectarme por SSH?
6.2.1 Si tiene acceso físico al servidor
- Inicie en modo de usuario único (seleccione
recovery modeen GRUB). - Restablezca la contraseña con:
passwd usuario- Reinicie el sistema.
6.2.2 Si no tiene acceso físico (como en un VPS en la nube)
- Use la consola del proveedor de VPS para conectarse.
- Habilite la autenticación por clave pública.
6.3 ¿Cómo usar SSH en Windows?
6.3.1 Usando PowerShell
Desde Windows 10, PowerShell incluye un cliente SSH integrado:
ssh usuario@IP_del_servidor6.3.2 Usando PuTTY
- Descargue e instale PuTTY.
- Introduzca la IP del servidor en
Host Name (or IP address). - Seleccione
SSHenConnection typey haga clic enOpen. - Introduzca usuario y contraseña.
6.4 ¿Cómo configurar SSH en Ubuntu WSL (Windows Subsystem for Linux)?
Para configurar SSH en WSL:
6.4.1 Instalar el servidor SSH
sudo apt update && sudo apt install openssh-server6.4.2 Cambiar la configuración de SSH
Edite /etc/ssh/sshd_config y habilite:
PasswordAuthentication yesComo WSL no usa systemd por defecto, inicie SSH manualmente:
sudo service ssh start6.5 ¿Qué medidas de seguridad adicionales aplicar después de configurar SSH?
6.5.1 Instalar Fail2Ban
Para proteger contra accesos no autorizados:
sudo apt install fail2ban -yEdite /etc/fail2ban/jail.local y active la protección:
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600Reinicie Fail2Ban:
sudo systemctl restart fail2ban6.5.2 Cambiar el puerto de SSH
Edite /etc/ssh/sshd_config y modifique:
Port 2200Luego reinicie SSH y permita el puerto en UFW:
sudo ufw allow 2200/tcp6.6 ¿Cómo monitorear los logs de SSH en tiempo real en Ubuntu?
Para ver registros en tiempo real:
sudo journalctl -u ssh -fPara consultar registros anteriores:
sudo cat /var/log/auth.log | grep ssh6.7 ¿Cómo hacer que SSH sea más práctico?
6.7.1 Inicios de sesión rápidos con .ssh/config
Guarde configuraciones en ~/.ssh/config:
Host miservidor
HostName 192.168.1.100
User usuario
Port 2200
IdentityFile ~/.ssh/id_rsaLuego podrá conectarse simplemente con:
ssh miservidor6.7.2 Usar ssh-agent
Para evitar introducir la passphrase de la clave privada cada vez:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsaResumen
En esta sección hemos visto preguntas y soluciones comunes sobre SSH:
- Solución de desconexiones por timeout
- Cómo recuperar acceso si se olvida la contraseña
- Uso de SSH en Windows y WSL
- Medidas adicionales de seguridad
- Revisión de logs de SSH
- Consejos para hacer SSH más práctico
Aplicando estas recomendaciones, podrá gestionar servidores de forma segura y eficiente.
Artículos relacionados
1. Introducción Al utilizar SSH en Ubuntu, es posible acceder y administrar de manera segura un servidor o PC de forma […]



![Cómo verificar, cambiar y gestionar versiones de Python en Ubuntu [Guía completa]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/02/36b84d2ec91b0993972a29a44e5757c7-375x214.webp)
