- 1 1. Introducción
- 2 2. Conceptos básicos de SSH
- 3 3. Instalación de un servidor SSH en Ubuntu
- 4 4. Configuración de conexiones SSH
- 5 5. Ejecución de conexiones SSH
- 6 6. Solución de problemas en conexiones SSH
- 6.1 Causas comunes de errores en conexiones SSH y soluciones
- 6.2 1. El servidor SSH no está ejecutándose
- 6.3 2. El firewall (UFW) está bloqueando SSH
- 6.4 3. El número de puerto ha sido cambiado
- 6.5 4. Permisos Incorrectos de la Clave SSH
- 6.6 5. Incongruencia de la Clave del Host
- 6.7 6. Verificando los Registros SSH
- 6.8 7. Problemas de Tiempo de Espera de la Conexión SSH
- 6.9 Resumen
- 7 7. Mejorando la Seguridad de SSH
- 8 9. Conclusión
1. Introducción
Al usar SSH en Ubuntu, puedes acceder y operar servidores o PCs de forma segura de manera remota. Este artículo proporciona una explicación detallada de SSH —desde sus conceptos básicos y cómo instalar un servidor SSH en Ubuntu, hasta las mejores prácticas de seguridad y la resolución de problemas— utilizando explicaciones claras adecuadas incluso para principiantes.
¿Qué es SSH?
SSH (Secure Shell) es un protocolo que permite conexiones remotas seguras a computadoras a través de una red. A diferencia de protocolos tradicionales como Telnet o FTP, SSH cifra los datos de comunicación, reduciendo significativamente el riesgo de espionaje y manipulación.
Principales casos de uso de SSH en Ubuntu
Los principales escenarios en los que se usa SSH en Ubuntu incluyen los siguientes:
- Gestión remota de servidores : Opera servidores Ubuntu desde ubicaciones remotas
- Transferencia de archivos : Intercambia archivos de forma segura usando SCP o SFTP
- Reenvío de puertos : Establece conexiones remotas seguras
Lo que aprenderás en este artículo
- Conceptos básicos y mecanismos de SSH
- Cómo instalar un servidor SSH en Ubuntu
- Cómo configurar conexiones SSH y resolver errores
- Mejores prácticas de seguridad para SSH
2. Conceptos básicos de SSH
Para usar SSH de manera efectiva, es crucial entender sus conceptos principales. En este capítulo, explicamos cómo funciona SSH y las diferencias entre los métodos de autenticación.
Cómo funciona SSH
SSH es un protocolo que establece una conexión segura entre un cliente y un servidor. Por defecto, utiliza el puerto TCP 22 para la comunicación cifrada.
Características principales
- Inicio de sesión remoto : Ejecuta comandos en un servidor
- Transferencia de archivos : Envía datos de forma segura mediante SCP o SFTP
- Reenvío de puertos : Conéctate a otros servicios a través de SSH
Métodos de autenticación de SSH
SSH ofrece principalmente dos métodos de autenticación:
Autenticación con contraseña
- Inicia sesión usando un nombre de usuario y contraseña
- Simple, pero vulnerable a ataques de fuerza bruta
Autenticación con clave pública
- Autenticación usando un par de claves pública y privada
- Más segura y recomendada por defecto
Ventajas de SSH
- Comunicación cifrada : Protege los datos transmitidos
- Gestión remota fácil : Acceso desde cualquier lugar
- Seguridad mejorada : Ayuda a prevenir accesos no autorizados
3. Instalación de un servidor SSH en Ubuntu
Para usar SSH en Ubuntu, debes instalar el paquete del servidor OpenSSH. Este capítulo explica cómo instalarlo y configurarlo.
Instalación del servidor OpenSSH
Puedes instalar el servidor OpenSSH en Ubuntu usando los siguientes comandos:
sudo apt update
sudo apt install openssh-server
Después de la instalación, verifica que el servicio SSH esté en ejecución:
sudo systemctl status ssh
Inicio y gestión del servicio SSH
Para iniciar o detener manualmente el servicio SSH, usa los siguientes comandos:
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically after reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
Configuración de UFW (Uncomplicated Firewall)
Si UFW está habilitado, las conexiones SSH podrían bloquearse. Permite el puerto SSH (22) con los comandos a continuación:
sudo ufw allow ssh
sudo ufw enable
4. Configuración de conexiones SSH
Para usar SSH de forma segura, una configuración adecuada es esencial. Este capítulo explica cómo configurar la autenticación con clave pública.
Generación de un par de claves
Ejecuta el siguiente comando en la máquina cliente para generar un par de claves pública/privada:
ssh-keygen -t rsa -b 4096
Por defecto, la clave privada se almacena en ~/.ssh/id_rsa y la clave pública en ~/.ssh/id_rsa.pub.
Carga de la clave pública al servidor
Transfiere la clave pública generada al servidor SSH:
ssh-copy-id username@server-ip-address
O transfiere manualmente:
scp ~/.ssh/id_rsa.pub username@server-ip-address:~/
En el servidor, ejecuta los siguientes comandos para colocar la clave pública en el directorio correcto:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
Edición de sshd_config
Abra el archivo de configuración de SSH para mejorar la configuración de seguridad:
sudo nano /etc/ssh/sshd_config
Verifique y edite los siguientes elementos de configuración:
# Disable password authentication (use public key only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the SSH port (example: 2222)
Port 2222
Después de realizar los cambios, reinicie el servicio SSH:
sudo systemctl restart ssh
5. Ejecución de conexiones SSH
Una vez que el servidor SSH esté configurado en Ubuntu, puede conectarse desde una máquina cliente. Este capítulo explica el uso básico de SSH y los métodos de conexión cuando se cambia el puerto.
Comando básico de conexión SSH
Utilice el siguiente comando para conectarse desde un cliente SSH al servidor:
ssh username@server-ip-address
Por ejemplo, si la IP del servidor es 192.168.1.10 y el nombre de usuario es ubuntu, escriba:
ssh ubuntu@192.168.1.10
En la primera conexión, se mostrará la huella digital del servidor. Ingrese yes para aceptar y continuar.
Conexión después de cambiar el número de puerto
Si cambió el puerto SSH, por ejemplo, a 2222, utilice la opción -p:
ssh -p 2222 ubuntu@192.168.1.10
Conexión con una clave privada
Si se ha configurado la autenticación con clave pública, especifique la clave privada utilizando la opción -i:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Ejecución de comandos remotos vía SSH
Puede ejecutar comandos directamente en el servidor remoto sin iniciar sesión de manera interactiva:
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
Este enfoque permite una automatización eficiente y operaciones remotas utilizando scripts.
Transferencia de archivos con SCP
Puede transferir archivos entre la PC local y el servidor remoto utilizando SSH.
Local → Remoto
scp filename username@server-ip-address:/remote/directory
Ejemplo:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
Remoto → Local
scp username@server-ip-address:/remote/filename /local/directory
Ejemplo:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
Gestión de archivos con SFTP
También puede gestionar archivos utilizando SFTP:
sftp ubuntu@192.168.1.10
Una vez conectado, puede ejecutar los siguientes comandos:
ls # List files
cd # Change directory
put filename # Upload a local file to the remote server
get filename # Download a remote file to the local machine
exit # Exit the connection
6. Solución de problemas en conexiones SSH
No es raro encontrar problemas al conectarse vía SSH. Este capítulo describe problemas comunes y cómo resolverlos.
Causas comunes de errores en conexiones SSH y soluciones
Cuando falla una conexión SSH, la causa suele ser una de las siguientes:
1. El servidor SSH no está ejecutándose
Primero, confirme que el servidor SSH se esté ejecutando correctamente:
sudo systemctl status ssh
Solución:
- Si el servidor SSH está detenido, inícielo utilizando el siguiente comando:
sudo systemctl start ssh
- Para habilitar que SSH se inicie automáticamente después del reinicio, ejecute:
sudo systemctl enable ssh
2. El firewall (UFW) está bloqueando SSH
Si UFW (Uncomplicated Firewall) está habilitado, el acceso SSH puede estar bloqueado:
Solución:
- Verifique la configuración actual de UFW:
sudo ufw status
- Permita el acceso SSH:
sudo ufw allow ssh
(Si utiliza un puerto personalizado, ejecute sudo ufw allow <port-number>)
- Reinicie UFW:
sudo ufw reload
3. El número de puerto ha sido cambiado
Si el servidor SSH no está utilizando el puerto predeterminado 22, debe especificar el puerto correcto al conectarse:
Solución:
- Verifique el número de puerto en el servidor:
sudo grep Port /etc/ssh/sshd_config
- Especifique el puerto correcto en el cliente:
ssh -p 2222 username@server-ip-address
4. Permisos Incorrectos de la Clave SSH
Si está utilizando autenticación con clave pública, los permisos incorrectos de la clave pueden impedir la conexión.
Solución:
- Establezca los permisos para la clave privada:
chmod 600 ~/.ssh/id_rsa
- Establezca los permisos para la clave pública:
chmod 644 ~/.ssh/authorized_keys
5. Incongruencia de la Clave del Host
Si la clave del host SSH en el servidor ha cambiado, el cliente puede mostrar un error como: “¡ADVERTENCIA: LA IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO!”
Solución:
- Elimine la clave del host antigua:
ssh-keygen -R <server-ip-address>
- Intente conectarse nuevamente:
ssh username@server-ip-address
6. Verificando los Registros SSH
Para identificar mensajes de error detallados de SSH, revise los archivos de registro del servidor:
sudo journalctl -u ssh --no-pager | tail -n 20
Para monitorear los registros en tiempo real, ejecute:
sudo tail -f /var/log/auth.log
7. Problemas de Tiempo de Espera de la Conexión SSH
Si las conexiones SSH son lentas o se desconectan inesperadamente, revise los siguientes puntos:
Solución:
- Habilitar KeepAlive Añada lo siguiente al archivo
~/.ssh/configdel cliente:Host * ServerAliveInterval 60
- Ajustar la configuración de tiempo de espera en el servidor Añada lo siguiente a
/etc/ssh/sshd_configy reinicie el servicio:ClientAliveInterval 60 ClientAliveCountMax 3sudo systemctl restart ssh
Resumen
Los problemas de conexión SSH suelen originarse en los siguientes puntos. En la mayoría de los casos, revisar estos elementos resuelve el problema:
✅ Verifique que el servicio SSH esté en ejecución
✅ Compruebe si el firewall está bloqueando la conexión
✅ Confirme que se está utilizando el puerto SSH correcto
✅ Asegúrese de que los permisos de la clave SSH estén configurados correctamente
✅ Revise los registros SSH para identificar errores detallados

7. Mejorando la Seguridad de SSH
SSH es una herramienta poderosa de acceso remoto, pero sin medidas de seguridad adecuadas, puede convertirse en un objetivo para accesos no autorizados o ataques de fuerza bruta. Este capítulo explica configuraciones recomendadas para reforzar la seguridad de SSH.
1. Desactivar la Autenticación por Contraseña y Usar Autenticación con Clave Pública
Por defecto, SSH permite el inicio de sesión con contraseña, lo que incrementa el riesgo de ataques de fuerza bruta. Habilite la autenticación con clave pública y desactive la autenticación por contraseña para mejorar la seguridad.
Pasos
- Edite
sshd_configsudo nano /etc/ssh/sshd_config
- Edite o añada las siguientes configuraciones
PasswordAuthentication no PubkeyAuthentication yes
- Reinicie el servicio SSH
sudo systemctl restart ssh
Después de aplicar esta configuración, SSH solo aceptará autenticación con clave pública. Asegúrese de que sus claves SSH estén configuradas correctamente de antemano.
2. Cambiar el Número de Puerto SSH
Usar el puerto SSH predeterminado (22) hace que los servidores sean objetivos más fáciles para los atacantes. Cambiar el número de puerto ayuda a reducir los intentos de acceso no autorizado.
Pasos
- Abra
sshd_configsudo nano /etc/ssh/sshd_config
- Modifique la siguiente línea (ejemplo: cambie el puerto a 2222)
Port 2222
- Permita el nuevo puerto a través del firewall
sudo ufw allow 2222/tcp
- Reinicie el servicio SSH
sudo systemctl restart ssh
- Pruebe la conexión usando el nuevo puerto
ssh -p 2222 username@server-ip-address
3. Desactivar el Acceso Root
Por defecto, SSH permite el acceso root, lo que representa un riesgo de seguridad serio. Se recomienda permitir el acceso SSH solo a través de cuentas de usuario normales y usar sudo cuando se requieran privilegios administrativos.
Pasos
- Abra
sshd_configsudo nano /etc/ssh/sshd_config
- Edite la siguiente línea
PermitRootLogin no
- Reinicie el servicio SSH
sudo systemctl restart ssh
4. Prevenir Ataques de Fuerza Bruta con Fail2Ban
Fail2Ban detecta intentos de inicio de sesión no autorizados y bloquea automáticamente las direcciones IP que superan un número determinado de fallos.
Instalación y Configuración
- Instale Fail2Ban
.«` sudo apt install fail2ban -y
2. Copiar el archivo de configuración predeterminado
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
3. Editar `jail.local`
sudo nano /etc/fail2ban/jail.local
4. Modificar la sección `[sshd]`
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600* `maxretry` : Número de intentos fallidos de inicio de sesión permitidos
* `bantime` : Duración del bloqueo de IP (segundos)
* `findtime` : Ventana de tiempo para contar intentos fallidos (segundos)
1. Reiniciar Fail2Ban
sudo systemctl restart fail2ban
6. Verificar el estado actual de Fail2Ban
sudo fail2ban-client status sshd
### Resumen
Para mejorar la seguridad de SSH, aplique las siguientes medidas:
✅ **Desactivar la autenticación por contraseña y usar autenticación con clave pública**
✅ **Cambiar el puerto de SSH para reducir la exposición a ataques**
✅ **Desactivar el inicio de sesión como root para minimizar riesgos**
✅ **Utilizar Fail2Ban para prevenir ataques de fuerza bruta**
## 8. Preguntas Frecuentes (FAQ)
Esta sección aborda preguntas comunes y problemas que surgen al configurar y usar SSH.
### Q1: ¿Por qué SSH muestra “Connection refused”?
Hay varias causas posibles para que una conexión SSH sea rechazada.
**Causas principales y soluciones:**
1. **El servicio SSH no está en ejecución**
sudo systemctl status ssh
**Solución:** Inicie el servicio si está detenido.
sudo systemctl start ssh
2. **El firewall (UFW) está bloqueando SSH**
sudo ufw allow ssh sudo ufw enable
3. **El número de puerto SSH ha sido cambiado** Si SSH usa un puerto personalizado, especifíquelo al conectarse.
ssh -p 2222 username@server-ip-address
### Q2: ¿Cómo cambio el puerto SSH predeterminado?
El puerto 22 es un objetivo frecuente de ataques, por lo que cambiarlo mejora la seguridad.
**Pasos:**
1. Editar el archivo de configuración de SSH
sudo nano /etc/ssh/sshd_config
2. Modificar la directiva `Port`
Port 2222
3. Permitir el nuevo puerto a través del firewall
sudo ufw allow 2222/tcp
4. Reiniciar el servicio SSH
sudo systemctl restart ssh
Después de realizar estos cambios, conéctese usando el nuevo puerto:
ssh -p 2222 username@server-ip-address
### Q3: ¿Qué debo verificar si la autenticación con clave pública no funciona?
Verifique lo siguiente si la autenticación con clave SSH falla:
1. **Asegúrese de que la clave pública esté instalada correctamente**
ls -l ~/.ssh/authorized_keys
Asegúrese de que `authorized_keys` exista y contenga la clave correcta.
2. **Comprobar los permisos de los archivos**
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
3. **Verificar que SSH permita la autenticación con clave pública**
sudo nano /etc/ssh/sshd_config
Asegúrese de que las siguientes entradas estén presentes:
PubkeyAuthentication yes PasswordAuthentication no
4. **Reiniciar el servicio SSH**
sudo systemctl restart ssh
### Q4: ¿Cómo permito el acceso SSH solo desde direcciones IP específicas?
Restringir el acceso SSH a direcciones IP específicas aumenta significativamente la seguridad.
**Método 1: Editar `sshd_config`**
1. Abrir el archivo de configuración
sudo nano /etc/ssh/sshd_config
2. Añadir una entrada `AllowUsers`
AllowUsers username@192.168.1.100
3. Reiniciar el servicio SSH
sudo systemctl restart ssh
**Método 2: Configurar el firewall (UFW)**
1. Permitir acceso desde una IP específica
sudo ufw allow from 192.168.1.100 to any port 22
2. Denegar acceso a los demás
sudo ufw deny 22
### Q5: ¿Cómo puedo cambiar el tiempo de espera de la sesión SSH?
Si su sesión SSH se desconecta después de estar inactiva, modifique los siguientes ajustes.
**Configuración del cliente**
1. Añada lo siguiente a `~/.ssh/config` :
Host * ServerAliveInterval 60
**Configuración del servidor**
1. Editar `sshd_config`
sudo nano /etc/ssh/sshd_config
2. Añadir o modificar:
ClientAliveInterval 60 ClientAliveCountMax 3
3. Reiniciar el servicio SSH
sudo systemctl restart ssh «`
Resumen
Esta FAQ cubre los problemas y soluciones más comunes de SSH. Cuando ocurre un problema, siempre revise los registros y la configuración para identificar la causa.
✅ Cómo resolver problemas de “Connection refused”
✅ Cómo cambiar el puerto SSH predeterminado y conectarse correctamente
✅ Cómo solucionar fallos de autenticación con clave pública
✅ Cómo restringir el acceso SSH a direcciones IP específicas
✅ Cómo evitar que las sesiones SSH expiren
9. Conclusión
Este artículo explicó cómo configurar y usar SSH en Ubuntu, desde conceptos básicos hasta prácticas de seguridad avanzadas. Repasemos los puntos clave.
Puntos clave
1. Conceptos básicos de SSH
- SSH permite acceso remoto seguro mediante comunicación cifrada.
- Más seguro que Telnet o FTP.
- Los métodos de autenticación incluyen autenticación por contraseña y autenticación con clave pública.
2. Instalación del servidor SSH
- Instale OpenSSH mediante
sudo apt install openssh-server. - Verifique el estado del servicio con
systemctl status ssh. - Permita el acceso SSH a través de UFW usando
sudo ufw allow ssh.
3. Configuración del acceso SSH
- Conéctese con
ssh username@server-ip-address. - Utilice la autenticación con clave pública para mayor seguridad.
- Desactive la autenticación por contraseña en
sshd_configsi lo desea.
4. Solución de problemas
- Compruebe si SSH está en ejecución (
systemctl status ssh). - Especifique el puerto correcto si se cambió (
ssh -p 2222 username@IP). - Verifique los permisos de la clave en
~/.ssh/authorized_keys.
5. Mejoras de seguridad
- Desactive la autenticación por contraseña y confíe en claves públicas.
- Cambie el puerto SSH para reducir los ataques de escaneo.
- Use Fail2Ban para bloquear intentos de inicio de sesión repetidos.
- Restrinja el acceso SSH a direcciones IP específicas cuando sea posible.
Recursos de aprendizaje adicionales
Para profundizar su comprensión de SSH, explore los siguientes recursos:
📚 Documentación oficial
🛠 Herramientas relacionadas
- PuTTY para acceso SSH en Windows
- Descargar PuTTY
- MobaXterm para funciones SSH avanzadas
- Sitio oficial de MobaXterm
🎥 Videos recomendados
- Busca en YouTube “Ubuntu SSH setup” para encontrar tutoriales para principiantes.
作成した動画を友だち、家族、世界中の人たちと共有…
Próximos pasos
Una vez que comprenda cómo funciona SSH, explore usos más avanzados:
✅ Automatizar la gestión de servidores usando Ansible sobre SSH
- Ideal para gestionar varios servidores de manera eficiente.
✅ Túneles SSH y reenvío de puertos
- Use SSH para asegurar conexiones de escritorio remoto o crear túneles tipo VPN.
✅ Monitorear los registros SSH y mejorar la seguridad
- Use herramientas como
fail2banylogwatchpara vigilar actividades sospechosas.
Reflexiones finales
¡Gracias por leer esta guía hasta el final! 🎉
Configurar correctamente SSH en Ubuntu mejora enormemente la eficiencia y la seguridad de la gestión remota.
A medida que continúe aprendiendo, explore técnicas avanzadas como túneles seguros y monitoreo proactivo para crear sistemas aún más robustos.
¡Disfrute de una experiencia SSH segura y productiva! 🖥️🔐




