目次
1. Introducción
Al utilizar SSH en Ubuntu, es posible acceder y administrar de manera segura un servidor o PC de forma remota. En este artículo, explicaremos en detalle, desde los conceptos básicos de SSH, la instalación del servidor SSH en Ubuntu, medidas de seguridad y resolución de problemas, todo de una forma comprensible incluso para principiantes.¿Qué es SSH?
SSH (Secure Shell) es un protocolo que permite conectarse de manera segura a un ordenador remoto a través de la red. A diferencia de Telnet o FTP, los datos son cifrados, lo que reduce significativamente el riesgo de espionaje o manipulación.Principales usos de SSH en Ubuntu
Los principales escenarios en los que se utiliza SSH en Ubuntu incluyen:- Administración de servidores remotos: Operar servidores Ubuntu desde ubicaciones remotas
- Transferencia de archivos: Intercambio seguro de archivos mediante SCP o SFTP
- Port forwarding: Conexiones remotas con mayor seguridad
Lo que aprenderás en este artículo
- Conceptos básicos y funcionamiento de SSH
- Cómo instalar un servidor SSH en Ubuntu
- Configuración y solución de problemas de la conexión SSH
- Medidas de seguridad para SSH
2. Conceptos básicos de SSH
Para aprovechar SSH de manera efectiva, es fundamental comprender sus conceptos básicos. En este capítulo explicaremos cómo funciona SSH y las diferencias entre sus métodos de autenticación.Cómo funciona SSH
SSH es un protocolo que establece una conexión segura entre cliente y servidor. De manera predeterminada, utiliza el puerto TCP 22 para la comunicación cifrada. Funciones principales- Inicio de sesión remoto: Ejecutar comandos en el servidor
- Transferencia de archivos: Envío seguro de datos mediante SCP o SFTP
- Port forwarding: Acceso a otros servicios a través de SSH
Métodos de autenticación en SSH
Existen principalmente dos métodos de autenticación en SSH:Autenticación por contraseña
- El usuario inicia sesión con nombre y contraseña
- Es simple, pero vulnerable a ataques de fuerza bruta
Autenticación mediante clave pública
- Utiliza un par de claves pública y privada
- Ofrece mayor seguridad y es el método recomendado
Ventajas de SSH
- Cifrado de datos: El contenido de la comunicación está protegido
- Gestión remota sencilla: Acceso desde cualquier lugar
- Mayor seguridad: Prevención contra accesos no autorizados
3. Instalación del servidor SSH en Ubuntu
Para utilizar SSH en Ubuntu es necesario instalar el servidor OpenSSH. Aquí explicamos los pasos de instalación y la configuración básica.Instalación de OpenSSH Server
En Ubuntu, se puede instalar OpenSSH Server con los siguientes comandos:sudo apt update
sudo apt install openssh-server
Una vez completada la instalación, verifica que el servicio SSH esté en ejecución:sudo systemctl status ssh
Inicio y verificación del servicio SSH
Para iniciar o detener manualmente el servicio SSH, utiliza estos comandos:# Iniciar SSH
sudo systemctl start ssh
# Habilitar SSH (inicio automático tras reinicio)
sudo systemctl enable ssh
# Detener SSH
sudo systemctl stop ssh
Configuración de UFW (Uncomplicated Firewall)
Si UFW está habilitado por defecto, es posible que bloquee las conexiones SSH. Permite el puerto 22 con estos comandos:sudo ufw allow ssh
sudo ufw enable
4. Configuración de la conexión SSH
Para usar SSH de forma segura, es necesario configurarlo adecuadamente. En este capítulo veremos cómo configurar la autenticación con clave pública.Generación de pares de claves
En el cliente, ejecuta el siguiente comando para generar un par de claves pública y privada:ssh-keygen -t rsa -b 4096
Por defecto, la clave privada se guarda en ~/.ssh/id_rsa
y la clave pública en ~/.ssh/id_rsa.pub
.Colocación de la clave pública en el servidor
Transfiere la clave pública generada al servidor SSH:ssh-copy-id usuario@IP-del-servidor
O de forma manual:scp ~/.ssh/id_rsa.pub usuario@IP-del-servidor:~/
En el servidor, ejecuta:mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
Edición de sshd_config
Abre el archivo de configuración para reforzar la seguridad:sudo nano /etc/ssh/sshd_config
Revisa o edita lo siguiente:# Desactivar autenticación por contraseña (solo clave pública)
PasswordAuthentication no
# Prohibir login de root
PermitRootLogin no
# Cambiar puerto de conexión (ejemplo: 2222)
Port 2222
Después, reinicia el servicio:sudo systemctl restart ssh
5. Ejecución de la conexión SSH
Tras configurar el servidor SSH en Ubuntu, conecta desde el cliente.Comando básico de conexión SSH
Para conectar al servidor desde el cliente SSH:ssh usuario@IP-del-servidor
Ejemplo:ssh ubuntu@192.168.1.10
En la primera conexión, aparecerá la huella digital del servidor. Escribe «yes» para aceptar.Conexión con puerto personalizado
Si el puerto no es el 22, sino por ejemplo el 2222:ssh -p 2222 ubuntu@192.168.1.10
Conexión usando clave privada
Cuando se usa autenticación por clave pública:ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Ejecución remota de comandos
Puedes ejecutar comandos directamente sin iniciar sesión:ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
Transferencia de archivos con SCP
Local → Remotoscp archivo usuario@IP-del-servidor:/ruta/remota
Ejemplo:scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
Remoto → Localscp usuario@IP-del-servidor:/ruta/archivo ./
Gestión de archivos con SFTP
Conéctate vía SFTP:sftp ubuntu@192.168.1.10
Comandos comunes:ls # Listar archivos
cd # Cambiar directorio
put archivo # Subir archivo local
get archivo # Descargar archivo remoto
exit # Salir
6. Solución de problemas con SSH
Los errores en la conexión SSH son comunes. A continuación, los problemas más frecuentes y sus soluciones.Errores típicos y cómo resolverlos
1. El servidor SSH no está en ejecución
Verifica el estado:sudo systemctl status ssh
Solución:- Inicia el servidor:
sudo systemctl start ssh
- Habilita el inicio automático:
sudo systemctl enable ssh
2. El firewall (UFW) bloquea SSH
Si UFW está activo, puede bloquear SSH. Solución: sudo ufw status
sudo ufw allow ssh
sudo ufw reload
3. El puerto fue cambiado
Solución: sudo grep Port /etc/ssh/sshd_config
ssh -p 2222 usuario@IP-del-servidor
4. Permisos incorrectos en claves SSH
Solución: chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/authorized_keys
5. Desajuste de host key
Solución: ssh-keygen -R <IP-del-servidor>
ssh usuario@IP-del-servidor
6. Revisión de logs de SSH
sudo journalctl -u ssh --no-pager | tail -n 20
sudo tail -f /var/log/auth.log
7. Conexión con timeout
Solución: Host *
ServerAliveInterval 60
Y en el servidor: ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh
7. Reforzando la seguridad de SSH
SSH es potente, pero debe configurarse de manera segura. Aquí, ajustes recomendados:1. Desactivar contraseñas y usar claves públicas
PasswordAuthentication no
PubkeyAuthentication yes
2. Cambiar el puerto por defecto
Port 2222
sudo ufw allow 2222/tcp
3. Prohibir login de root
PermitRootLogin no
4. Instalar Fail2Ban
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Configuración: [sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
8. Preguntas frecuentes (FAQ)
Q1: ¿Por qué aparece «Conexión rechazada»?
Posibles causas:- SSH no está en ejecución (
sudo systemctl start ssh
) - UFW bloquea el puerto (
sudo ufw allow ssh
) - Puerto cambiado: usar
ssh -p 2222 usuario@IP
Q2: ¿Cómo cambiar el puerto por defecto?
Edita/etc/ssh/sshd_config
, cambia Port 22
a Port 2222
, permite en UFW y reinicia SSH.Q3: ¿Qué revisar si la autenticación por clave no funciona?
- Clave pública en
~/.ssh/authorized_keys
- Permisos correctos (
chmod 600 ~/.ssh/authorized_keys
) - Configuración en
sshd_config
habilitada
Q4: ¿Cómo permitir solo ciertas IPs?
Ensshd_config
:AllowUsers usuario@192.168.1.100
O con UFW:sudo ufw allow from 192.168.1.100 to any port 22
Q5: ¿Cómo ajustar el tiempo de timeout?
Cliente:ServerAliveInterval 60
Servidor:ClientAliveInterval 60
ClientAliveCountMax 3
9. Conclusión
En este artículo explicamos detalladamente cómo configurar y asegurar SSH en Ubuntu, desde los fundamentos hasta medidas avanzadas de seguridad y resolución de problemas.Puntos clave
- SSH cifra la comunicación y permite administración remota segura.
- Se recomienda autenticación por clave pública sobre contraseñas.
- Configurar firewall y puertos es esencial para seguridad.
- Fail2Ban y reglas de acceso mejoran la protección contra ataques.