Guia de configuracion de claves SSH: Crear claves, desactivar contrasena root y proteger tu VPS
TUTORIAL 10 min read fordnox

Guia de configuracion de claves SSH: Crear claves, desactivar contrasena root y proteger tu VPS

Aprende a crear claves SSH, desactivar el inicio de sesion con contrasena root y verificar puertos abiertos en tu VPS. Guia paso a paso para proteger tu servidor en minutos.


Guia de configuracion de claves SSH: Crear claves, desactivar contrasena root y proteger tu VPS

Cada VPS que inicias es escaneado inmediatamente por bots que prueban contrasenas predeterminadas. En cuestion de minutos. Si todavia inicias sesion con una contrasena de root, estas a un ataque de fuerza bruta de tener un servidor comprometido.

Las claves SSH solucionan esto. Son mas fuertes que cualquier contrasena, mas rapidas de usar y te permiten desactivar completamente el inicio de sesion con contrasena. Aqui te explicamos como configurar todo, ademas de como verificar que puertos estan expuestos en tu servidor.

Paso 1: Crear un par de claves SSH

Las claves SSH funcionan en pares: una clave privada (se queda en tu computadora, nunca la compartas) y una clave publica (va al servidor).

En macOS o Linux

Abre una terminal y ejecuta:

ssh-keygen -t ed25519 -C "your@email.com"

Veras:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/you/.ssh/id_ed25519):

Presiona Enter para aceptar la ubicacion predeterminada. Luego establece una frase de contrasena (recomendado) o presiona Enter para omitirla.

Esto crea dos archivos:

ArchivoQue esCompartirlo?
~/.ssh/id_ed25519Clave privadaNunca
~/.ssh/id_ed25519.pubClave publicaSi, copiala a los servidores

En Windows

Opcion A: Windows Terminal / PowerShell

ssh-keygen -t ed25519 -C "your@email.com"

El mismo proceso que arriba. Las claves se guardan en C:\Users\YourName\.ssh\.

Opcion B: PuTTYgen

  1. Descarga PuTTY
  2. Abre PuTTYgen
  3. Selecciona EdDSA (Ed25519)
  4. Haz clic en Generate y mueve el raton
  5. Guarda la clave privada (.ppk) y copia el texto de la clave publica

Por que Ed25519?

AlgoritmoTamano de claveSeguridadVelocidad
RSA 40964096-bitBuenaMas lenta
Ed25519256-bitExcelenteLa mas rapida
ECDSA256-bitBuenaRapida

Ed25519 es el estandar moderno: claves mas cortas, operaciones mas rapidas, seguridad solida. Usalo a menos que necesites compatibilidad RSA con sistemas muy antiguos.

Paso 2: Copiar tu clave publica al servidor

Metodo 1: ssh-copy-id (El mas facil)

ssh-copy-id root@your-server-ip

Introduce tu contrasena por ultima vez. Listo. La herramienta agrega tu clave publica a ~/.ssh/authorized_keys en el servidor.

Metodo 2: Copia manual

Si ssh-copy-id no esta disponible:

cat ~/.ssh/id_ed25519.pub | ssh root@your-server-ip \
  "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Metodo 3: Durante la creacion del VPS

La mayoria de los proveedores te permiten agregar claves SSH al crear un servidor:

Este es el mejor enfoque: el servidor esta protegido desde el momento en que arranca.

Verifica que funciona

ssh root@your-server-ip

Deberias iniciar sesion sin que te pidan una contrasena (o solo te pediran la frase de contrasena de tu clave si configuraste una).

Paso 3: Desactivar el inicio de sesion con contrasena de root

Una vez que el inicio de sesion con clave SSH funciona, desactiva completamente la autenticacion con contrasena. Esto hace que los ataques de fuerza bruta sean imposibles.

Editar la configuracion de SSH

sudo nano /etc/ssh/sshd_config

Busca y cambia estas lineas (algunas pueden estar comentadas con #):

# Desactivar autenticacion con contrasena
PasswordAuthentication no

# Desactivar contrasenas vacias
PermitEmptyPasswords no

# Desactivar challenge-response (PAM)
KbdInteractiveAuthentication no

# Opcional: desactivar el inicio de sesion como root completamente (usa un usuario regular + sudo en su lugar)
# PermitRootLogin no

# Si quieres inicio de sesion como root pero SOLO con claves:
PermitRootLogin prohibit-password

Aplicar los cambios

sudo systemctl restart sshd

Advertencia: Antes de cerrar tu sesion actual, abre una nueva terminal y verifica que puedes seguir iniciando sesion con tu clave. Si te bloqueas, necesitaras acceso a la consola desde el panel de control de tu proveedor de VPS.

Pruebalo

Desde otra maquina (o intenta explicitamente con contrasena):

ssh -o PreferredAuthentications=password root@your-server-ip

Deberias ver:

Permission denied (publickey).

Eso significa que el inicio de sesion con contrasena esta desactivado. Solo tu clave SSH funciona ahora.

Paso 4: Verificar puertos abiertos en tu VPS

Cada puerto abierto es una superficie de ataque potencial. Deberias saber exactamente que esta expuesto.

Verificar desde dentro de tu servidor

Listar todos los puertos en escucha:

ss -tlnp

La salida se ve asi:

State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
LISTEN  0       128     0.0.0.0:22          0.0.0.0:*          users:(("sshd",pid=1234))
LISTEN  0       511     0.0.0.0:80          0.0.0.0:*          users:(("nginx",pid=5678))
LISTEN  0       511     0.0.0.0:443         0.0.0.0:*          users:(("nginx",pid=5678))
LISTEN  0       128     127.0.0.1:5432      0.0.0.0:*          users:(("postgres",pid=9012))

Que te dice cada columna:

ColumnaSignificado
0.0.0.0:22Escuchando en todas las interfaces (accesible publicamente)
127.0.0.1:5432Escuchando solo en localhost (no accesible publicamente)
ProcessQue programa esta usando el puerto

Punto clave: Todo lo que esta en 0.0.0.0 o [::] es accesible desde internet. Todo lo que esta en 127.0.0.1 es solo local.

Verificar desde fuera de tu servidor

Esto te dice lo que internet realmente ve.

Usando nmap (el mas completo):

# Instala nmap en tu maquina local
# macOS: brew install nmap
# Ubuntu: sudo apt install nmap

# Escanear puertos comunes
nmap your-server-ip

# Escanear TODOS los puertos (toma mas tiempo)
nmap -p- your-server-ip

# Escanear con deteccion de servicios
nmap -sV your-server-ip

Usando netcat (verificacion rapida de un solo puerto):

nc -zv your-server-ip 22
nc -zv your-server-ip 3306

Usando un escaner en linea:

Visita shodan.io y busca la IP de tu servidor. Muestra todos los puertos y servicios detectados publicamente, exactamente lo que ven los atacantes.

Que puertos deberian estar abiertos?

Para un servidor web tipico:

PuertoServicioDeberia estar abierto?
22SSHSi (considera cambiarlo a uno no estandar)
80HTTPSi (redirige a HTTPS)
443HTTPSSi
3306MySQLNo, enlazar a localhost
5432PostgreSQLNo, enlazar a localhost
6379RedisNo, enlazar a localhost
27017MongoDBNo, enlazar a localhost

Regla general: Si un servicio no necesita ser accesible desde internet, enlazalo a 127.0.0.1.

Cerrar puertos innecesarios con UFW

UFW (Uncomplicated Firewall) es la forma mas sencilla de gestionar el acceso a puertos en Ubuntu/Debian:

# Habilitar UFW (permite SSH primero!)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# Verificar estado
sudo ufw status verbose

# Bloquear un puerto especifico
sudo ufw deny 3306

# Permitir solo desde una IP especifica
sudo ufw allow from 203.0.113.50 to any port 22

Siempre permite SSH antes de habilitar UFW. De lo contrario, te bloquearas el acceso.

Extra: Endurecimiento adicional de SSH

Cambiar el puerto SSH predeterminado

Mover SSH del puerto 22 elimina el 99% de los escaneos automatizados:

# /etc/ssh/sshd_config
Port 2222
sudo systemctl restart sshd
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp

Luego conectate con:

ssh -p 2222 root@your-server-ip

Configurar un archivo de configuracion SSH

Deja de escribir comandos largos. Crea ~/.ssh/config en tu maquina local:

Host myserver
    HostName 203.0.113.50
    User root
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Ahora solo escribe:

ssh myserver

Habilitar Fail2Ban

Fail2Ban monitorea archivos de registro y bloquea temporalmente las IPs con demasiados intentos fallidos de inicio de sesion:

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Verificar IPs bloqueadas
sudo fail2ban-client status sshd

Lista rapida de seguridad

Despues de configurar cualquier VPS nuevo, revisa esto:

Preguntas frecuentes

Perdi mi clave SSH. Como puedo volver a acceder?

Usa la consola web de tu proveedor de VPS (disponible en el panel de control de cada proveedor). Te da acceso directo a la terminal sin SSH. Desde ahi, puedes agregar una nueva clave publica o volver a habilitar temporalmente la autenticacion con contrasena.

Puedo usar multiples claves SSH?

Si. Agrega cada clave publica en su propia linea en ~/.ssh/authorized_keys en el servidor. Util para acceso en equipo o diferentes dispositivos.

Deberia establecer una frase de contrasena en mi clave?

Si, especialmente en dispositivos compartidos o portatiles. Agrega una segunda capa de seguridad: incluso si alguien roba tu archivo de clave, no podra usarlo sin la frase de contrasena. Usa ssh-agent para evitar escribirla cada vez:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Cambiar el puerto SSH es realmente util?

No mejora la seguridad contra ataques dirigidos, pero elimina aproximadamente el 99% del trafico automatizado de bots. Menos ruido en tus registros, menos recursos desperdiciados en intentos fallidos.

Como se si alguien esta intentando entrar?

Revisa tu registro de autenticacion:

# Ubuntu/Debian
sudo tail -100 /var/log/auth.log | grep "Failed password"

# CentOS/RHEL
sudo tail -100 /var/log/secure | grep "Failed password"

Si ves miles de entradas de diferentes IPs, eso es escaneo normal de bots. Es exactamente por lo que desactivas la autenticacion con contrasena.

Que sigue?

Ahora que SSH esta asegurado y sabes que puertos estan abiertos, has cubierto los vectores de ataque mas criticos. Para profundizar en la seguridad de VPS, consulta nuestra guia de seguridad de VPS y la guia de configuracion de WireGuard para tuneles cifrados entre servidores.

Necesitas un VPS para practicar? Los planes KVM de Hostinger comienzan en unos pocos dolares al mes y te dan acceso root completo, perfecto para aprender seguridad de servidores de forma practica.

~/ssh-key-management-guide/get-started

Ready to get started?

Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.

Get Hostinger VPS — $4.99/mo

// up to 75% off + free domain included

// related topics

configuracion claves ssh crear clave ssh desactivar contrasena root ssh autenticacion con clave ssh verificar puertos abiertos vps guia seguridad vps

// related guides

Andrius Putna

Andrius Putna

I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.

// last updated: March 14, 2026. Disclosure: This article may contain affiliate links.