Una contraseña la puede adivinar mil veces por segundo una máquina que no duerme nunca. Una clave no: no hay nada lo bastante corto que probar. El cambio cuesta diez minutos y elimina toda una familia de ataques.
Genere el par
ssh-keygen -t ed25519 -C "you@yourmachine"
Ed25519 es hoy el valor por defecto: corta, rápida y fuerte. Póngale una frase de paso: si le roban el portátil, esa frase es lo único que hay entre el ladrón y sus servidores.
Instale la mitad pública
ssh-copy-id ops@your-server
Eso añade la clave pública a ~/.ssh/authorized_keys en el servidor. La mitad privada no sale nunca de su máquina, ni debe salir.
Pruébela en una ventana NUEVA
No cierre la sesión en la que está. Abra una segunda terminal y entre con la clave. Si falla, todavía tiene la primera ventana para arreglarlo desde ahí.
ssh ops@your-server
Luego apague las contraseñas
# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
# then
systemctl reload ssh
Recargar, no reiniciar: la recarga mantiene vivas las sesiones existentes, así que un error no lo desconecta.
Cuando no funciona
- Los permisos. SSH rechaza claves en un directorio que otros puedan leer:
chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys - El usuario equivocado. La clave va en el directorio personal del usuario con el que entra, no en el de root.
- Lea el motivo.
ssh -v ops@serverimprime cada clave que ofrece y por qué se rechazó cada una.
Una clave por máquina, no una clave copiada a todas. Cuando se pierde un portátil, quita una línea en el servidor, y no cambia nada más.