Come appare il messaggio
admin@203.0.113.10: Permission denied (publickey).Cause frequenti
- Nome utente sbagliato, ad es. root invece di ubuntu o admin.
- Chiave pubblica assente in
~/.ssh/authorized_keyso spezzata su più righe. - Permessi troppo aperti: home scrivibile dal gruppo,
.sshnon 700 oauthorized_keysnon 600 (StrictModes). - Vecchia chiave RSA con firma SHA-1: le versioni recenti di OpenSSH rifiutano
ssh-rsa. - L'agent offre troppe chiavi e il server chiude dopo
MaxAuthTries.
Verifica
- Guarda nel client quali chiavi vengono offerte e rifiutate
ssh -vvv admin@203.0.113.10 2>&1 | grep -E 'Offering|Server accepts|Authentications that can continue|no mutual' - Controlla il log del server per il login
journalctl -u ssh -u sshd --since '10 min ago' | grep -iE 'authentication|refused|bad ownership' - Controlla i permessi di home, .ssh e authorized_keys
ls -ld ~admin ~admin/.ssh ~admin/.ssh/authorized_keys - Mostra le impostazioni effettive di sshd
sshd -T | grep -E 'pubkeyauthentication|authorizedkeysfile|allowusers|pubkeyacceptedalgorithms'
Soluzione
- Collegati con la chiave giusta:
ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes admin@host. - Installa bene la chiave:
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@hosto dalla console del provider. - Imposta i permessi:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keyse controlla il proprietario. - Sostituisci le vecchie chiavi RSA con Ed25519 invece di riattivare
ssh-rsa. - Con SELinux:
restorecon -Rv ~/.ssh.
Domande frequenti
Come entro se sono rimasto chiuso fuori?
Dalla console web o rescue del provider. Lì aggiungi la chiave in authorized_keys e controlla i permessi; non attivare PasswordAuthentication in modo permanente.
Perché una chiave funziona e un'altra no?
Il server accetta solo chiavi la cui parte pubblica è in authorized_keys e il cui tipo è consentito. ssh -vvv mostra quale chiave è stata offerta.