Una password può essere indovinata mille volte al secondo da una macchina che non dorme mai. Una chiave no: non c'è nulla di abbastanza corto da provare. Il passaggio costa dieci minuti e toglie di mezzo un'intera famiglia di attacchi.
Generi la coppia
ssh-keygen -t ed25519 -C "you@yourmachine"
Ed25519 è il valore predefinito di oggi: corta, veloce e robusta. Le dia una passphrase: se il portatile viene rubato, quella passphrase è l'unica cosa fra il ladro e i suoi server.
Installi la metà pubblica
ssh-copy-id ops@your-server
Questo accoda la chiave pubblica a ~/.ssh/authorized_keys sul server. La metà privata non lascia mai la sua macchina e non deve mai farlo.
La provi in una finestra NUOVA
Non chiuda la sessione in cui si trova. Apra un secondo terminale ed entri con la chiave. Se fallisce, le resta la prima finestra da cui rimediare.
ssh ops@your-server
Poi spenga le password
# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
# then
systemctl reload ssh
Reload, non restart: il reload tiene vive le sessioni già aperte, così un errore non la butta fuori.
Quando non funziona
- I permessi. SSH rifiuta le chiavi che stanno in una directory leggibile da altri:
chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys - L'utente sbagliato. La chiave va nella home dell'utente con cui entra, non in quella di root.
- Legga il motivo.
ssh -v ops@serverstampa ogni chiave che offre e perché ciascuna è stata rifiutata.
Una chiave per macchina, non una sola chiave copiata su tutte. Quando si perde un portatile lei toglie una riga sul server, e non cambia nient'altro.