Cómo configurar acceso SSH con llaves públicas en Linux

Cómo configurar acceso SSH con llaves públicas en Linux (sin usar contraseñas)

Aprende a proteger tu servidor Linux utilizando autenticación por llaves SSH. Este método es más seguro que usar contraseñas tradicionales y es ampliamente utilizado en servidores Debian, Ubuntu, VPS y servidores dedicados.


¿Por qué usar llaves SSH?

Cuando accedes a un servidor mediante contraseña, cualquier persona que conozca la dirección IP puede intentar ataques de fuerza bruta.

Con las llaves SSH:

✅ No necesitas escribir la contraseña del servidor.

✅ Puedes desactivar completamente el acceso por contraseña.

✅ Es mucho más difícil comprometer la cuenta.

✅ Es el método recomendado por administradores de sistemas.


¿Cómo funciona?

SSH utiliza dos archivos:

Llave privada

Se queda en tu computadora:

~/.ssh/id_ed25519

Nunca debe compartirse.

Llave pública

Se copia al servidor:

~/.ssh/id_ed25519.pub

Puede compartirse libremente.

Cuando te conectas, el servidor verifica que posees la llave privada correspondiente a la llave pública autorizada.


Paso 1: Crear una llave SSH

En tu computadora ejecuta:

ssh-keygen -t ed25519

Verás:

Generating public/private ed25519 key pair.
Enter file in which to save the key:

Presiona Enter para aceptar la ubicación predeterminada:

/home/usuario/.ssh/id_ed25519

Después puedes:

  • Establecer una passphrase (recomendado)
  • O dejarla vacía para mayor comodidad

Paso 2: Verificar los archivos creados

ls -la ~/.ssh

Deberías ver algo parecido a:

id_ed25519
id_ed25519.pub

Paso 3: Copiar la llave pública al servidor

Supongamos que tu servidor tiene:

  • Usuario: admin
  • IP: 192.168.1.100

Ejecuta:

ssh-copy-id admin@192.168.1.100

Ingresa la contraseña actual del usuario.

Si todo sale correctamente aparecerá:

Number of key(s) added: 1

Paso 4: Probar el acceso

Ahora intenta conectarte:

ssh admin@192.168.1.100

Si configuraste una passphrase se solicitará dicha passphrase.

Si no configuraste una, el acceso será automático.


Paso 5: Desactivar contraseñas SSH

Una vez confirmada la autenticación mediante llaves:

sudo nano /etc/ssh/sshd_config

Agregar al final:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitEmptyPasswords no

Verificar:

sudo sshd -t

Reiniciar:

sudo systemctl restart ssh

Paso 6: Probar nuevamente

Abre una nueva terminal:

ssh admin@192.168.1.100

Si puedes entrar correctamente, las contraseñas ya han quedado deshabilitadas.


¿Puedo usar la misma llave para varios servidores?

Sí.

Por ejemplo:

Mi PC
└─ id_ed25519
├─ VPS Web
├─ Servidor Debian
├─ Raspberry Pi
└─ Servidor IRC

La misma llave pública puede copiarse a múltiples servidores.


¿Es recomendable una llave diferente para cada servidor?

También es una excelente práctica.

Ejemplo:

ssh-keygen -t ed25519 -f ~/.ssh/vps_web
ssh-keygen -t ed25519 -f ~/.ssh/servidor_irc
ssh-keygen -t ed25519 -f ~/.ssh/laboratorio

Esto crea:

~/.ssh/vps_web
~/.ssh/vps_web.pub

~/.ssh/servidor_irc
~/.ssh/servidor_irc.pub

~/.ssh/laboratorio
~/.ssh/laboratorio.pub

Conexión:

ssh -i ~/.ssh/vps_web admin@192.168.1.100

Ventaja:

Si una llave se compromete, únicamente afecta a ese servidor.


La autenticación mediante llaves SSH es una de las medidas más importantes para proteger cualquier servidor Linux. Permite eliminar el acceso por contraseña, dificulta los ataques automatizados y proporciona una administración más segura de sistemas remotos.

Deja un comentario