Permission denied (publickey) – Linux SSH_PUBLICKEY_DENIED

SSH_PUBLICKEY_DENIED

L'errore SSH Permission denied (publickey) indica che il server ha rifiutato l'autenticazione con chiave pubblica per l'utente o la chiave presentata. Le cause frequenti sono utente o host errati, chiave privata non selezionata, chiave pubblica assente in authorized_keys, permessi troppo aperti o configurazione sshd non coerente. La diagnosi parte da ssh -v e dal controllo della coppia di chiavi sul client e sul server.

Cosa significa questo errore?

L'errore SSH Permission denied (publickey) indica che il server ha rifiutato l'autenticazione con chiave pubblica per l'utente o la chiave presentata. Le cause frequenti sono utente o host errati, chiave privata non selezionata, chiave pubblica assente in authorized_keys, permessi troppo aperti o configurazione sshd non coerente. La diagnosi parte da ssh -v e dal controllo della coppia di chiavi sul client e sul server.

Messaggio originale

Permission denied (publickey)

Contesto e parole chiave

Alias

  • SSH key rejected
  • ssh publickey authentication failed

Messaggi alternativi

  • Autenticazione con chiave pubblica rifiutata
  • Chiave SSH non accettata dal server

Prodotti

  • OpenSSH client / OpenSSH server

Piattaforme

  • Debian
  • Fedora
  • RHEL / AlmaLinux
  • Ubuntu

Parole chiave

  • authorized_keys permissions
  • linux ssh key rejected
  • ssh permission denied publickey

Cause possibili

Chiave pubblica non presente in authorized_keys

Il server non trova la chiave pubblica corrispondente alla privata presentata dal client per quell'utente.

molto comune

Permessi o proprietario errati nella directory SSH

sshd può ignorare authorized_keys quando .ssh o il file sono scrivibili da altri utenti o appartengono all'utente sbagliato.

comune

Diagnosi

Chiave e utente effettivamente usati dal client

Eseguire SSH in modalità verbose e verificare host, username e chiavi offerte.

Come leggere il risultato. Il log mostra se la chiave viene offerta e in quale fase il server la rifiuta.

bash
ssh -vvv -i ~/.ssh/id_ed25519 user@server

authorized_keys e permessi lato server

Verificare che la chiave pubblica sia nella home dell'utente corretto e che i permessi siano restrittivi.

Come leggere il risultato. Directory e file devono essere accessibili all'utente senza risultare scrivibili da altri.

bash
ls -ld ~/.ssh && ls -l ~/.ssh/authorized_keys

Risoluzione

Installazione della chiave pubblica corretta

Difficoltà: facileRischio: medio

Aggiungere la chiave pubblica corrispondente alla privata usata dal client nell'account remoto corretto.

  1. Controllare fingerprint della chiave privata e pubblica.
  2. Verificare username e host.
  3. Aggiungere la chiave pubblica a ~/.ssh/authorized_keys.
  4. Riprovare con ssh -i esplicito.
bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

Correzione di proprietario e permessi SSH

Difficoltà: mediaRischio: medioRichiede amministratore

Rendere la directory e authorized_keys conformi ai controlli di sicurezza di sshd.

  1. Accedere al server con un metodo amministrativo disponibile.
  2. Impostare il proprietario sulla home SSH.
  3. Limitare i permessi della directory e del file.
  4. Controllare i log di sshd e riprovare.
bash
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

Domande frequenti

Perché la chiave esiste ma SSH continua a rifiutarla?

La chiave deve corrispondere all'utente e alla privata usata, trovarsi nel percorso authorized_keys corretto e rispettare i permessi che sshd considera sicuri.

Approfondimenti

Schede correlate