Cómo asegurar SSH en un VPS Linux

Por Equipo de ingeniería de ONIE · Actualizado el 12 de noviembre de 2026 · 3 min de lectura

Un VPS público recibe intentos de inicio de sesión automatizados en cuestión de minutos desde que está en línea. Estos pasos hacen que SSH sea mucho más difícil de atacar. Están escritos para Ubuntu o Debian. Si aún no has creado un servidor, puedes alquilar un VPS Linux y empezar desde una imagen limpia. Mantén abierta tu sesión SSH actual hasta que hayas probado la nueva configuración desde una segunda ventana.

1. Crea un usuario normal con sudo

adduser deploy
usermod -aG sudo deploy

2. Usa claves SSH en lugar de contraseñas

En tu propio equipo:

ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IP

Inicia sesión una vez con la clave para confirmar que funciona antes de desactivar las contraseñas.

3. Desactiva el login con contraseña y el de root

Crea /etc/ssh/sshd_config.d/99-hardening.conf:

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3

Comprueba la sintaxis y recarga el servicio. El servicio se llama ssh en Ubuntu y Debian, y sshd en sistemas basados en RHEL:

sudo sshd -t && sudo systemctl reload ssh

Abre una segunda terminal e inicia sesión de nuevo. Solo entonces cierra la sesión anterior.

4. Activa un firewall

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Abre solo los puertos que necesites, como el 80 y el 443 para un servidor web. También puedes restringir SSH a tu propia dirección IP con una regla de firewall en la consola de la nube.

5. Bloquea los fallos repetidos con Fail2ban

sudo apt install -y fail2ban

Crea /etc/fail2ban/jail.local:

[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

6. Instala actualizaciones de seguridad automáticamente

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

7. Extras opcionales

  • Cambiar el puerto SSH reduce el ruido en los logs, pero no es una medida de seguridad por sí sola.
  • Protege la clave privada con una frase de contraseña y guarda una copia de seguridad en un lugar seguro.
  • Revisa los inicios de sesión con last y sudo journalctl -u ssh --since today.
  • Haz un snapshot una vez configurado el servidor, para poder restaurar una base limpia.

Si pierdes el acceso, usa la consola del navegador en tu panel de nube para iniciar sesión y corregir la configuración. Nuestra guía de protección contra DDoS cubre la siguiente capa de defensa.

Preguntas frecuentes

¿Es seguro desactivar el login de root?

Sí, siempre que primero crees un usuario sudo y compruebes que su clave funciona. Aun así, puedes ejecutar comandos administrativos con sudo.

¿Necesito Fail2ban si solo uso claves?

Es opcional. Con el login por contraseña desactivado, un ataque de fuerza bruta no puede tener éxito, pero Fail2ban reduce el ruido en los logs y la carga.

¿Qué hago si pierdo mi clave SSH?

Usa la consola de tu panel de nube para iniciar sesión, añade una nueva clave pública a ~/.ssh/authorized_keys y elimina la antigua.

Fuentes y lecturas recomendadas

Más guías de VPS