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-serverUna vez completada la instalación, verifica que el servicio SSH esté en ejecución:
sudo systemctl status sshInicio 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 sshConfiguració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 enable4. 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 4096Por 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-servidorO 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.pubEdición de sshd_config
Abre el archivo de configuración para reforzar la seguridad:
sudo nano /etc/ssh/sshd_configRevisa 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 2222Después, reinicia el servicio:
sudo systemctl restart ssh5. 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-servidorEjemplo:
ssh ubuntu@192.168.1.10En 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.10Conexión usando clave privada
Cuando se usa autenticación por clave pública:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10Ejecució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 → Remoto
scp archivo usuario@IP-del-servidor:/ruta/remotaEjemplo:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/Remoto → Local
scp usuario@IP-del-servidor:/ruta/archivo ./Gestión de archivos con SFTP
Conéctate vía SFTP:
sftp ubuntu@192.168.1.10Comandos comunes:
ls # Listar archivos
cd # Cambiar directorio
put archivo # Subir archivo local
get archivo # Descargar archivo remoto
exit # Salir6. 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 sshSolución:
- Inicia el servidor:
sudo systemctl start ssh- Habilita el inicio automático:
sudo systemctl enable ssh2. El firewall (UFW) bloquea SSH
Si UFW está activo, puede bloquear SSH.
Solución:
sudo ufw status
sudo ufw allow ssh
sudo ufw reload3. El puerto fue cambiado
Solución:
sudo grep Port /etc/ssh/sshd_config
ssh -p 2222 usuario@IP-del-servidor4. Permisos incorrectos en claves SSH
Solución:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/authorized_keys5. Desajuste de host key
Solución:
ssh-keygen -R <IP-del-servidor>
ssh usuario@IP-del-servidor6. Revisión de logs de SSH
sudo journalctl -u ssh --no-pager | tail -n 20
sudo tail -f /var/log/auth.log7. Conexión con timeout
Solución:
Host *
ServerAliveInterval 60Y en el servidor:
ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh7. 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 yes2. Cambiar el puerto por defecto
Port 2222
sudo ufw allow 2222/tcp3. Prohibir login de root
PermitRootLogin no4. Instalar Fail2Ban
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localConfiguración:
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 6008. 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_confighabilitada
Q4: ¿Cómo permitir solo ciertas IPs?
En sshd_config:
AllowUsers usuario@192.168.1.100O con UFW:
sudo ufw allow from 192.168.1.100 to any port 22Q5: ¿Cómo ajustar el tiempo de timeout?
Cliente:
ServerAliveInterval 60Servidor:
ClientAliveInterval 60
ClientAliveCountMax 39. 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.


