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.



