Ahorre 15% en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código: Skills Comenzar
Secciones
Linux Seguridad Servidores virtuales

Conexión y Configuración de SSH en un VPS: La Guía Completa de Seguridad

Secure shell (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 reforzar tu configuración contra ataques del mundo real — para que puedas administrar tu entorno de VPS Hosting con confianza.

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: algunos 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 debidamente endurecida te proporciona un canal de gestión rápido, resiliente y genuinamente seguro.

Si aún no has elegido un entorno de alojamiento, considera explorar planes de VPS Hosting que incluyan acceso root completo, recursos dedicados y la flexibilidad para implementar todas las medidas de seguridad cubiertas en esta guía.

Requisitos previos

Antes de comenzar, confirma que tienes lo siguiente en su lugar:

RequisitoDetalles
Un VPS en funcionamientoCualquier distribución Linux (Ubuntu, Debian, CentOS, AlmaLinux, etc.) con un SO instalado
Cliente SSHLinux/macOS: comando ssh integrado. Windows: PuTTY, Windows Terminal o WSL
Dirección IP del servidorProporcionada en tu panel de control de hosting después del aprovisionamiento
Credenciales de inicio de sesiónNombre de usuario predeterminado (root o un usuario con permisos sudo) y contraseña inicial
Familiaridad básica con la terminalCapacidad para 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 por 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_ip

Reemplaza 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.45

Aviso 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 añade la clave del 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

  1. Descarga y abre PuTTY desde putty.org.
  2. En el campo Host Name (or IP address), ingresa la dirección IP de tu servidor.
  3. Confirma que Port está configurado en 22 y que Connection type es SSH.
  4. Haz clic en Open.
  5. Acepta la huella digital de la clave del host cuando se te solicite.
  6. Ingresa tu nombre de usuario y contraseña.

> Alternativa para 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 está controlado por un único archivo de configuración:

/etc/ssh/sshd_config

Ábrelo con privilegios elevados:

sudo nano /etc/ssh/sshd_config

Trabaja en 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 22

Cámbiala a un puerto de tu elección (usa un número entre 1024 y 65535 que no esté siendo usado por otro servicio):

Port 2222

Elimina 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 permite el nuevo puerto. Consulta la nota de firewall a continuación.

Actualiza tu firewall (ejemplo UFW):

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reload

Actualiza tu firewall (ejemplo firewalld):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Paso 2: Desactivar el Inicio de Sesión como Root

Permitir el inicio de sesión directo como root a través de 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 yes

Cámbialo a:

PermitRootLogin no

Antes de desactivar el inicio de sesión como root, asegúrate de tener un usuario no root con privilegios sudo:

# Create a new user
adduser adminuser

# Grant sudo privileges
usermod -aG sudo adminuser

Prueba que este usuario pueda iniciar sesión y ejecutar comandos sudo *antes* de desactivar el inicio de sesión como root y reiniciar SSH.

Paso 3: Desactivar Autenticación por Contraseña (Después de Configurar Claves)

Una vez que la autenticación por clave SSH esté configurada (siguiente sección), desactiva completamente el inicio de sesión basado en contraseña para eliminar el riesgo de fuerza bruta:

PasswordAuthentication no

También asegúrate de que estas directivas relacionadas estén configuradas:

ChallengeResponseAuthentication no
UsePAM no

Paso 4: Directivas Recomendadas Adicionales

Añade 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 no

Configuración de la 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 reside 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 seguro que el algoritmo RSA más antiguo. Si tu sistema requiere RSA por 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 establezca 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.com

Paso 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_ip

Este comando:

  1. Se conecta a tu servidor usando autenticación por contraseña.
  2. Crea ~/.ssh/authorized_keys en el servidor si no existe.
  3. Añade tu clave pública a ese archivo.
  4. Establece los 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_keys

Paso 3: Verificar el Inicio de Sesión Basado en Clave Antes de Desactivar Contraseñas

No desactives 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 2222

Si te conectas correctamente sin que se te pida una contraseña (solo tu frase de contraseña de clave, si está establecida), procede a desactivar PasswordAuthentication en sshd_config.

Reiniciar y Verificar el Servicio SSH

Después de guardar todos los cambios en sshd_config, valida la sintaxis de la configuración antes de reiniciar:

sudo sshd -t

Si no se devuelven errores, reinicia el daemon SSH:

sudo systemctl restart sshd

Verifica que el servicio se inició correctamente:

sudo systemctl status sshd

Deberí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.

Probando Tu Configuración Segura

Prueba 1: Conectar en el Nuevo Puerto con Tu Clave

Desde tu máquina local:

ssh username@your_server_ip -p 2222

Resultado esperado: Estás conectado usando tu clave SSH (se te pedirá la contraseña de tu clave si estableciste una, pero no la contraseña de tu servidor).

Prueba 2: Confirmar que el Inicio de Sesión de Root Está Bloqueado

ssh root@your_server_ip -p 2222

Resultado esperado:

Permission denied (publickey).

o

root@your_server_ip: Permission denied

Prueba 3: Confirmar que la Autenticación por Contraseña Está Deshabilitada

ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=no

Resultado 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 de inicio de sesión SSH fallidos repetidos. Es un complemento esencial para los pasos de endurecimiento de SSH anteriores.

Instalar Fail2Ban

Ubuntu/Debian:

sudo apt update && sudo apt install fail2ban -y

CentOS/AlmaLinux/RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Configurar Fail2Ban para SSH

Crea un archivo de anulación local (nunca edites directamente el archivo predeterminado jail.conf):

sudo nano /etc/fail2ban/jail.local

Añade lo siguiente:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s

Ajusta port para que coincida con tu puerto SSH personalizado. Guarda, luego habilita e inicia Fail2Ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Comprueba los bloqueos activos y el estado de la cárcel:

sudo fail2ban-client status sshd

Copia 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 gestor de contraseñas cifrado o almacenamiento sin conexión.
  • Guarda una copia de sshd_config antes de hacer cambios: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • Usa la consola fuera de banda de tu proveedor de hosting (acceso VNC/KVM a través del panel de control) como alternativa si pierdes acceso SSH.
  • Documenta tu puerto personalizado — es fácil olvidar 2222 cuando estás cambiando entre servidores.

Emparejamiento de SSH con la Infraestructura de Hosting Correcta

Una configuración segura de SSH es tan fuerte como la infraestructura que la respalda. Considera estos servicios complementarios:

  • Servidores Dedicados — Para cargas de trabajo que requieren máximo rendimiento y aislamiento completo del hardware, los servidores dedicados te dan control total sobre las capas física y de software, incluyendo la configuración de SSH.
  • Certificados SSL — Asegura el lado orientado a la web de tus aplicaciones con certificados SSL/TLS confiables, complementando la seguridad SSH del backend de tu servidor.
  • Registro de Dominios — Registra y gestiona tu dominio junto con tu hosting, facilitando la configuración de controles de acceso basados en DNS y nombres de host del servidor.

Conclusión

Una configuración SSH correctamente configurada es una de las mejoras de seguridad de mayor impacto que puedes hacer en cualquier servidor Linux. Para resumir lo que has implementado:

Medida de SeguridadBeneficio
Puerto SSH personalizadoElimina el escaneo automatizado del puerto 22
Inicio de sesión root deshabilitadoElimina la cuenta más dirigida del acceso remoto
Autenticación por clave SSHReemplaza contraseñas adivinables con prueba criptográfica
Autenticación por contraseña deshabilitadaCierra completamente el vector de ataque de fuerza bruta
Fail2BanBloquea automáticamente a los atacantes persistentes
MaxAuthTries & timeoutsLimita la exposición de ataques lentos o distribuidos

Estas medidas funcionan juntas para crear una defensa en capas — cada una significativa por sí sola, y significativamente más fuerte en combinación.

Ya sea que estés ejecutando un único sitio WordPress o administrando una flota de servidores de aplicaciones, comenzar con una configuración SSH endurecida te pone en control. Combínalo con una infraestructura de Hosting VPS confiable, mantén tus claves respaldadas, y tendrás un entorno de servidor seguro y profesional construido para durar.