Conexión y Configuración de SSH en un VPS: La Guía Completa de Seguridad
El acceso de shell seguro (SSH) es la piedra angular de la administración profesional de servidores. Ya sea que estés implementando un sitio WordPress, enviando código a través de Git o administrando aplicaciones personalizadas, SSH te proporciona un túnel encriptado y autenticado directamente en tu servidor. Esta guía completa te guía a través de cada paso — desde tu primera conexión hasta el endurecimiento de tu configuración contra ataques del mundo real — para que puedas administrar tu entorno de Alojamiento VPS con confianza.
Tabla de Contenidos
- Por qué la Seguridad SSH es Importante
- Requisitos Previos
- Conectarse a tu VPS a través de SSH
- Endurecimiento de SSH: Configuración Paso a Paso
- Configuración de Autenticación por Clave SSH
- Reinicio y Verificación del Servicio SSH
- Prueba de tu Configuración Segura
- Endurecimiento Adicional: Fail2Ban
- Conclusión
Por qué la Seguridad SSH es Importante
Cada servidor accesible públicamente enfrenta un bombardeo constante de intentos de fuerza bruta automatizados. Dentro de minutos de que un VPS se ponga en línea, los bots comienzan a escanear el puerto 22 e intentan combinaciones comunes de nombre de usuario/contraseña. Una configuración SSH mal asegurada es uno de los puntos de entrada más comunes para los atacantes.
La buena noticia: unos pocos cambios de configuración deliberados reducen drásticamente tu superficie de ataque. Combinado con una infraestructura confiable — como almacenamiento respaldado por NVMe y protección DDoS integrada — una configuración SSH adecuadamente endurecida te proporciona un canal de administración rápido, resiliente y genuinamente seguro.
Si aún no has elegido un entorno de alojamiento, considera explorar planes de Alojamiento VPS que incluyan acceso root completo, recursos dedicados y la flexibilidad para implementar cada medida de seguridad cubierta en esta guía.
Requisitos Previos
Antes de comenzar, confirma que tienes lo siguiente en su lugar:
| Requisito | Detalles |
|---|---|
| Un VPS en ejecución | Cualquier distribución Linux (Ubuntu, Debian, CentOS, AlmaLinux, etc.) con un SO instalado |
| Cliente SSH | Linux/macOS: comando ssh integrado. Windows: PuTTY, Windows Terminal, o WSL |
| Dirección IP del servidor | Proporcionada en tu panel de control de alojamiento después del aprovisionamiento |
| Credenciales de inicio de sesión | Nombre de usuario predeterminado (root o un usuario habilitado para sudo) y contraseña inicial |
| Familiaridad básica con terminal | Capacidad de ejecutar comandos y editar archivos con nano o vim |
> Consejo: Si estás administrando múltiples servidores o necesitas una interfaz gráfica junto con SSH, consulta Paneles de Control VPS para opciones como cPanel, Plesk y DirectAdmin que complementan el acceso de línea de comandos.
Conectarse a tu VPS a través de SSH
En Linux o macOS
Abre tu terminal y ejecuta:
ssh username@your_server_ipReemplaza username con tu nombre de usuario real (comúnmente root para un VPS nuevo) y your_server_ip con la dirección IP pública de tu servidor.
Ejemplo:
ssh root@203.0.113.45Aviso de primera conexión:
The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?Escribe yes y presiona Enter. Esto agrega la clave de host del servidor a tu archivo ~/.ssh/known_hosts. En conexiones posteriores, SSH verificará esta huella digital automáticamente — si alguna vez cambia inesperadamente, trátalo como un posible incidente de seguridad.
Ingresa tu contraseña cuando se te solicite.
En Windows Usando PuTTY
- Descarga y abre PuTTY desde putty.org.
- En el campo Host Name (o dirección IP), ingresa la dirección IP de tu servidor.
- Confirma que Port está configurado en
22y Connection type esSSH. - Haz clic en Open.
- Acepta la huella digital de la clave de host cuando se te solicite.
- Ingresa tu nombre de usuario y contraseña.
> Alternativa de Windows 10/11: Windows Terminal y PowerShell incluyen un cliente OpenSSH nativo. Puedes usar la misma sintaxis ssh username@your_server_ip que en Linux/macOS — no se requieren herramientas de terceros.
Endurecimiento de SSH: Configuración Paso a Paso
Todo el comportamiento de SSH se controla mediante un único archivo de configuración:
/etc/ssh/sshd_configÁbrelo con privilegios elevados:
sudo nano /etc/ssh/sshd_configTrabaja a través de cada paso de endurecimiento a continuación. Después de hacer todos los cambios, reiniciarás el servicio una vez — cubierto en la siguiente sección.
Paso 1: Cambiar el Puerto SSH Predeterminado
El puerto 22 es el primer puerto que escanean los bots. Mover SSH a un puerto no estándar elimina la gran mayoría del ruido automatizado en tus registros.
Localiza esta línea:
#Port 22Cámbiala a un puerto de tu elección (usa un número entre 1024 y 65535 que no esté siendo utilizado por otro servicio):
Port 2222Elimina el # para descomentar la línea. Guarda con CTRL+X, luego Y, luego Enter.
> Importante: Antes de reiniciar SSH, asegúrate de que tu firewall permita el nuevo puerto. Consulta la nota del firewall a continuación.
Actualiza tu firewall (ejemplo de UFW):
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reloadActualiza tu firewall (ejemplo de firewalld):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reloadPaso 2: Deshabilitar el Inicio de Sesión de Root
Permitir el inicio de sesión directo de root sobre SSH es un riesgo de seguridad significativo. En su lugar, inicia sesión como un usuario regular y escala privilegios con sudo cuando sea necesario.
En sshd_config, encuentra:
PermitRootLogin yesCámbialo a:
PermitRootLogin noAntes de deshabilitar el inicio de sesión de root, asegúrate de tener un usuario no root con privilegios sudo:
# Create a new user
adduser adminuser
# Grant sudo privileges
usermod -aG sudo adminuserPrueba que este usuario pueda iniciar sesión y ejecutar comandos sudo *antes* de deshabilitar el inicio de sesión de root y reiniciar SSH.
Paso 3: Deshabilitar la Autenticación por Contraseña (Después de Configurar Claves)
Una vez que se configure la autenticación por clave SSH (siguiente sección), deshabilita completamente el inicio de sesión basado en contraseña para eliminar el riesgo de fuerza bruta:
PasswordAuthentication noTambién asegúrate de que estas directivas relacionadas estén configuradas:
ChallengeResponseAuthentication no
UsePAM noPaso 4: Directivas Recomendadas Adicionales
Agrega o verifica estas configuraciones en sshd_config para una línea base de endurecimiento integral:
# Limit authentication attempts per connection
MaxAuthTries 3
# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable empty passwords
PermitEmptyPasswords no
# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser
# Use only strong protocol version
Protocol 2
# Disable X11 forwarding if not needed
X11Forwarding noConfiguración de Autenticación por Clave SSH
La autenticación por clave SSH reemplaza las contraseñas con un par de claves criptográficas: una clave privada que permanece en tu máquina local y una clave pública que vive en el servidor. Incluso si un atacante conoce tu nombre de usuario, no puede autenticarse sin tu clave privada.
Paso 1: Generar un Par de Claves SSH (en tu Máquina Local)
ssh-keygen -t ed25519 -C "your_email@example.com"> ¿Por qué Ed25519? Es más rápido y más seguro que el algoritmo RSA más antiguo. Si tu sistema requiere RSA para compatibilidad, usa ssh-keygen -t rsa -b 4096 en su lugar.
Se te pedirá que elijas una ubicación de guardado (el valor predeterminado ~/.ssh/id_ed25519 está bien) y que establezcas una frase de contraseña. Siempre establece una frase de contraseña — encripta tu clave privada para que el acceso físico a tu máquina no comprometa automáticamente tus servidores.
Salida:
Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.comPaso 2: Copiar la Clave Pública a tu VPS
El método más fácil utiliza ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ipEste comando:
- Se conecta a tu servidor usando autenticación por contraseña.
- Crea
~/.ssh/authorized_keysen el servidor si no existe. - Agrega tu clave pública a ese archivo.
- Establece permisos correctos automáticamente.
Método manual (si ssh-copy-id no está disponible):
# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub
# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysPaso 3: Verificar el Inicio de Sesión Basado en Clave Antes de Deshabilitar Contraseñas
No deshabilites la autenticación por contraseña hasta que hayas confirmado que el inicio de sesión basado en clave funciona. Abre una nueva ventana de terminal y prueba:
ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222Si te conectas exitosamente sin que se te pida una contraseña (solo tu frase de contraseña de clave, si la estableciste), procede a deshabilitar PasswordAuthentication en sshd_config.
Reinicio y Verificación del Servicio SSH
Después de guardar todos los cambios en sshd_config, valida la sintaxis de configuración antes de reiniciar:
sudo sshd -tSi no se devuelven errores, reinicia el demonio SSH:
sudo systemctl restart sshdVerifica que el servicio se inició exitosamente:
sudo systemctl status sshdDeberías ver Active: active (running) en la salida.
> Consejo de seguridad crítico: Mantén tu sesión SSH actual abierta mientras pruebas la nueva configuración en una ventana separada. Si algo sale mal, tu sesión existente permanece activa y puedes revertir los cambios.
Prueba de tu Configuración Segura
Prueba 1: Conectarse en el Nuevo Puerto con tu Clave
Desde tu máquina local:
ssh username@your_server_ip -p 2222Resultado esperado: Has iniciado sesión usando tu clave SSH (se te solicita tu frase de contraseña de clave si estableciste una, pero no tu contraseña de servidor).
Prueba 2: Confirmar que el Inicio de Sesión de Root está Bloqueado
ssh root@your_server_ip -p 2222Resultado esperado:
Permission denied (publickey).o
root@your_server_ip: Permission deniedPrueba 3: Confirmar que la Autenticación por Contraseña está Deshabilitada
ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=noResultado esperado:
Permission denied (publickey).Si la autenticación por contraseña aún estuviera habilitada, se te pediría una contraseña en su lugar.
Endurecimiento Adicional: Fail2Ban
Fail2Ban monitorea archivos de registro y bloquea automáticamente direcciones IP que muestren signos de actividad maliciosa — como intentos repetidos de inicio de sesión SSH fallidos. Es un complemento esencial para los pasos de endurecimiento de SSH anteriores.
Instalar Fail2Ban
Ubuntu/Debian:
sudo apt update && sudo apt install fail2ban -yCentOS/AlmaLinux/RHEL:
sudo dnf install epel-release -y
sudo dnf install fail2ban -yConfigurar Fail2Ban para SSH
Crea un archivo de anulación local (nunca edites directamente el jail.conf predeterminado):
sudo nano /etc/fail2ban/jail.localAgrega lo siguiente:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
backend = %(sshd_backend)sAjusta port para que coincida con tu puerto SSH personalizado. Guarda, luego habilita e inicia Fail2Ban:
sudo systemctl enable fail2ban
sudo systemctl start fail2banVerifica bloqueos activos y estado de la cárcel:
sudo fail2ban-client status sshdCopia de Seguridad de tus Claves SSH y Configuración
Un servidor bloqueado es un problema grave. Sigue estas prácticas para evitarlo:
- Haz una copia de seguridad de tu clave privada en un administrador de contraseñas encriptado o almacenamiento sin conexión.
- Almacena una copia de
sshd_configantes de hacer cambios:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - Usa la consola fuera de banda de tu proveedor de alojamiento (acceso VNC/KVM a través del panel de control) como alternativa si pierdes acceso SSH.
- Documenta tu puerto personalizado — es fácil olvidar
2222cuando estás alternando entre servidores.
Emparejamiento de SSH con la Infraestructura de Alojamiento Correcta
Una configuración SSH segura es tan fuerte como la infraestructura debajo de ella. Considera estos servicios complementarios:
- Servidores Dedicados — Para cargas de trabajo que requieren máximo rendimiento y aislamiento completo de hardware, los servidores dedicados te dan control total sobre capas físicas y de software, incluida la configuración de SSH.
