15%

Ahorra 15%<\/span> 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
01.11.2024

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

  1. Por qué la Seguridad SSH es Importante
  2. Requisitos Previos
  3. Conectarse a tu VPS a través de SSH
  4. Endurecimiento de SSH: Configuración Paso a Paso
  5. Configuración de Autenticación por Clave SSH
  6. Reinicio y Verificación del Servicio SSH
  7. Prueba de tu Configuración Segura
  8. Endurecimiento Adicional: Fail2Ban
  9. 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:

RequisitoDetalles
Un VPS en ejecuciónCualquier 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 alojamiento después del aprovisionamiento
Credenciales de inicio de sesiónNombre de usuario predeterminado (root o un usuario habilitado para sudo) y contraseña inicial
Familiaridad básica con terminalCapacidad 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_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 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

  1. Descarga y abre PuTTY desde putty.org.
  2. En el campo Host Name (o dirección IP), ingresa la dirección IP de tu servidor.
  3. Confirma que Port está configurado en 22 y Connection type es SSH.
  4. Haz clic en Open.
  5. Acepta la huella digital de la clave de host cuando se te solicite.
  6. 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_config

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

Cá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 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 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 reload

Actualiza tu firewall (ejemplo de firewalld):

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

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

Cámbialo a:

PermitRootLogin no

Antes 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 adminuser

Prueba 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 no

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

ChallengeResponseAuthentication no
UsePAM no

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

Configuració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.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. Agrega tu clave pública a ese archivo.
  4. 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_keys

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

Si 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 -t

Si no se devuelven errores, reinicia el demonio SSH:

sudo systemctl restart sshd

Verifica que el servicio se inició exitosamente:

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.

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 2222

Resultado 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 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 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 -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 jail.conf predeterminado):

sudo nano /etc/fail2ban/jail.local

Agrega 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

Verifica bloqueos activos y 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 administrador de contraseñas encriptado o almacenamiento sin conexión.
  • Almacena 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 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 2222 cuando 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.
15%

Ahorra 15%<\/span> 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