VPS

Cómo crear y usar llaves SSH en tu VPS paso a paso

Las llaves SSH son la forma más segura y cómoda de entrar a tu VPS. Te mostramos paso a paso cómo generarlas en Windows, macOS y Linux, copiarlas al servidor, crear un alias para conectarte rápido, desactivar el acceso con contraseña y resolver los errores más comunes.

Equipo HostSpace

7 min de lectura

Portada del artículo: Cómo crear y usar llaves SSH en tu VPS paso a paso

Lo esencial

  • Usa llaves ed25519 protegidas con una passphrase.
  • La carpeta ~/.ssh necesita permisos 700 y authorized_keys 600.
  • Un alias en ~/.ssh/config te ahorra escribir usuario, IP y llave.
  • Desactiva las contraseñas solo después de probar tu llave en una segunda sesión.
Contenido del artículo

Por qué usar llaves SSH en lugar de contraseña

En cuanto tu VPS tiene una IP pública, empiezan a llegar intentos automáticos de entrar por SSH probando contraseñas comunes. Una llave SSH resuelve el problema de raíz: en lugar de una contraseña que se puede adivinar, usas un par de archivos, una llave privada que nunca sale de tu computadora y una llave pública que copias al servidor.

Además de ser más segura, es más cómoda: te conectas sin escribir la contraseña del servidor cada vez. Si todavía estás decidiendo entre un plan compartido y un servidor propio, revisa primero hosting compartido o VPS.

Paso 1: genera tu par de llaves

Windows 10 y 11, macOS y cualquier distribución Linux traen el cliente OpenSSH, así que el comando es el mismo en los tres. Usa el tipo ed25519: es moderno, rápido y genera llaves cortas.

  1. Abre una terminal. En Windows usa PowerShell; en macOS, la app Terminal; en Linux, la que tengas a mano.
  2. Ejecuta el comando de abajo. El texto después de -C es solo una etiqueta para reconocer la llave.
  3. Presiona Enter para aceptar la ubicación por defecto (~/.ssh/id_ed25519, o C:\Users\tu-usuario\.ssh\id_ed25519 en Windows).
  4. Escribe una frase de contraseña (passphrase) y repítela.
Terminal
ssh-keygen -t ed25519 -C "laptop-oficina"

Se crean dos archivos: id_ed25519 (privada, no la compartas nunca) e id_ed25519.pub (pública, la que va al servidor).

Paso 2: copia la llave pública al VPS

Para este paso todavía necesitas entrar con la contraseña o con los datos de acceso que te enviamos al contratar. Usaremos como ejemplo el usuario admin y la IP 203.0.113.10.

En macOS y Linux: ssh-copy-id

Terminal
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@203.0.113.10

El comando te pide la contraseña del servidor una última vez, crea la carpeta ~/.ssh si no existe y agrega tu llave al archivo authorized_keys con los permisos correctos.

En Windows o a mano

PowerShell no incluye ssh-copy-id, pero puedes hacer lo mismo en una sola línea:

PowerShell
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh admin@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Si prefieres hacerlo totalmente a mano, entra al servidor, pega el contenido de tu .pub como una sola línea en ~/.ssh/authorized_keys y ajusta los permisos. SSH ignora la llave si la carpeta o el archivo los puede modificar otro usuario:

Servidor
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Prueba la conexión con ssh admin@203.0.113.10. Si te pide la passphrase de tu llave (y no la contraseña del servidor), ya está funcionando.

Paso 3: crea un alias en ~/.ssh/config

Escribir usuario, IP y llave en cada conexión se vuelve tedioso. El archivo ~/.ssh/config de tu computadora te deja guardar todo bajo un nombre corto:

~/.ssh/config
Host tunegocio
    HostName 203.0.113.10
    User admin
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Desde ahora basta con ssh tunegocio, y el alias también funciona con scp, rsync y Git. IdentitiesOnly yes evita que SSH pruebe todas tus llaves y el servidor te bloquee por demasiados intentos.

Paso 4: desactiva el acceso con contraseña

Mientras el servidor acepte contraseñas, los bots pueden seguir intentándolo. Una vez que compruebes que tu llave funciona, apágalas. En Ubuntu 24.04 y Debian 12 lo más limpio es crear un archivo propio en /etc/ssh/sshd_config.d/ en lugar de editar el archivo principal:

  1. Crea el archivo con sudo nano /etc/ssh/sshd_config.d/00-solo-llaves.conf. El prefijo 00- importa: SSH se queda con el primer valor que lee, y algunas imágenes de nube traen un 50-cloud-init.conf que vuelve a activar las contraseñas.
  2. Pega estas líneas y guarda:
/etc/ssh/sshd_config.d/00-solo-llaves.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
  1. Revisa que no haya errores de sintaxis con sudo sshd -t (si no imprime nada, está bien).
  2. Reinicia el servicio con sudo systemctl restart ssh. En Ubuntu y Debian se llama ssh; en AlmaLinux, Rocky o Fedora usa sudo systemctl restart sshd.
  3. Confirma el valor efectivo con sudo sshd -T | grep -i passwordauthentication. Debe decir passwordauthentication no.

Errores comunes y cómo resolverlos

Estos son los tres mensajes que más vas a ver al empezar con llaves SSH:

Errores frecuentes de SSH, su causa y la solución
MensajeQué significaCómo resolverlo
Permission denied (publickey)El servidor no aceptó ninguna de tus llaves: usuario equivocado, llave no copiada o permisos incorrectos en el servidor.Revisa el usuario, conéctate con ssh -v para ver qué llave ofreces y corrige los permisos de ~/.ssh y authorized_keys.
WARNING: UNPROTECTED PRIVATE KEY FILE!Tu llave privada la pueden leer otros usuarios de tu computadora y SSH se niega a usarla.Deja la llave solo para tu usuario: chmod 600 en macOS y Linux, o icacls en Windows.
REMOTE HOST IDENTIFICATION HAS CHANGED!La huella del servidor no coincide con la que guardaste; pasa al reinstalar el VPS o reutilizar la IP.Si sabes por qué cambió, borra la huella vieja con ssh-keygen -R. Si no, no te conectes y averigua.

Para depurar un Permission denied, conéctate con ssh -v tunegocio y revisa qué llaves ofrece tu equipo. Del lado del servidor, el registro de sudo journalctl -u ssh -n 50 suele decir la causa exacta, por ejemplo permisos demasiado abiertos en tu carpeta personal. Estos comandos corrigen los casos más comunes:

Terminal
chmod 600 ~/.ssh/id_ed25519
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "$($env:USERNAME):(R)"
ssh-keygen -R 203.0.113.10

El primero es para macOS y Linux, el segundo para PowerShell en Windows y el tercero borra la huella guardada de un servidor que reinstalaste. Con las llaves listas, sigue con cómo asegurar un VPS Linux o despliega tu app de Node con Nginx.

Preguntas frecuentes

Abre PowerShell y ejecuta ssh-keygen -t ed25519. Windows 10 y 11 ya incluyen OpenSSH; la llave se guarda en la carpeta .ssh de tu usuario.

Entra al VPS con otra llave o con la consola de tu proveedor, borra la llave pública perdida de authorized_keys y genera un par nuevo.

Sí. La llave pública puede ir en todos los servidores que quieras; lo importante es que la privada nunca salga de tu computadora.

Normalmente es un usuario equivocado, una llave que no se copió al servidor o permisos demasiado abiertos en ~/.ssh o authorized_keys.

Compartir

WhatsAppLinkedInXFacebook

Equipo HostSpace

Ofrecemos hosting, dominios, servidores VPS y correo corporativo con soporte en español. Escribimos sobre lo que más nos preguntan nuestros clientes.