"Permission denied, please try again." con la password giusta

Il server ha rifiutato il login con password. Il messaggio è lo stesso sia che la password sia sbagliata, sia che l'utente non esista, l'account sia bloccato, root non possa usare una password o l'utente non sia in AllowUsers, perché il server non dice nulla al client sul motivo. Controlla il nome utente con ssh -G server | grep '^user ', poi leggi il log del server, che il motivo lo dice.

Aggiornata il . Ogni caso è stato riprodotto con OpenSSH 10.3 su macOS contro un server OpenSSH 10.0 su Debian 13 in un container usa e getta, comprese le righe di log.

Cosa vedi

user@server's password:
Permission denied, please try again.
user@server's password:
Permission denied, please try again.
user@server's password:
user@server: Permission denied (publickey,password).

Di default SSH chiede tre volte, poi stampa l'ultima riga. L'elenco tra parentesi è ciò che il server accetta ancora. Se non include password, o non hai mai visto una richiesta di password, hai un problema diverso: vedi Permission denied (publickey).

Provare da solo il login con password

Questo esclude chiavi e agent, e chiede una volta sola:

ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -o NumberOfPasswordPrompts=1 user@server

Causa 1: il nome utente sbagliato

Senza user@, SSH invia il nome del tuo utente locale, oppure quello della tua configurazione:

ssh -G server | grep '^user '

Un utente che non esiste riceve la stessa richiesta di password e lo stesso rifiuto, quindi sembra esattamente una password sbagliata. Le immagini cloud spesso usano ubuntu, debian o ec2-user invece di root.

Per fissare l'utente di un host una volta per tutte, metti una riga User nel suo blocco del file di configurazione ssh.

Causa 2: la password sbagliata

Controlla le cose ovvie: layout della tastiera, Blocco Maiuscole e caratteri nascosti dovuti a un incolla. SSH non mostra nulla mentre digiti. Conta anche il prompt: Enter passphrase for key vuole la passphrase del file della tua chiave, mentre user@server's password: vuole la password dell'account sul server.

Leggere il log del server

Se puoi raggiungere il server in un altro modo, come la console di un provider, questo risolve la questione. Su Debian e Ubuntu:

sudo journalctl -u ssh -n 30

Sui sistemi in stile Red Hat usa -u sshd. I sistemi più vecchi scrivono in /var/log/auth.log o /var/log/secure.

Riga di logSignificato
Failed password for invalid user nameQuell'utente non esiste sul server, oppure è escluso da AllowUsers
User name from ... not allowed because not listed in AllowUsersL'utente esiste ma non è nell'elenco
Failed password for nameL'utente esiste e il controllo della password è fallito. È la password sbagliata, oppure una delle cause 3 e 4
Nessuna rigaStai raggiungendo un altro server o un'altra porta. Controlla ssh -G server | grep -E '^(hostname|port) '

Causa 3: root non può fare il login con una password

Il valore predefinito di PermitRootLogin è prohibit-password. Con questa impostazione, sshd mostra comunque la richiesta e risponde con questo messaggio anche se la password di root è corretta, e il log dice Failed password for root. Quindi il log non rivela il vero motivo. Chiedilo direttamente a sshd:

sudo sshd -T -C user=root,host=server,addr=203.0.113.10 | grep -i '^permitrootlogin'

Un risultato prohibit-password o il suo vecchio nome without-password lo conferma. Fai il login come utente normale e usa sudo, oppure usa una chiave per root. Vedi Disattivare il login root.

Causa 4: l'account è bloccato

sudo passwd -S name

Il secondo campo è L per bloccato, P per una password utilizzabile e NP per nessuna password. Un account bloccato dà lo stesso rifiuto, e il log di nuovo dice solo Failed password. Sbloccalo o imposta una nuova password:

sudo passwd -u name
sudo passwd name

Un account scaduto dà un testo diverso, Your account has expired; please contact your system administrator. Controllalo con sudo chage -l name. Una shell nologin ti fa entrare e poi stampa This account is currently not available.

Causa 5: AllowUsers, DenyUsers e le versioni per gruppi

Queste regole rifiutano un utente anche con la password giusta. Guarda cosa si applica a quell'utente, compresi i blocchi Match:

sudo sshd -T -C user=name,host=server,addr=203.0.113.10 | grep -iE '^(allowusers|denyusers|allowgroups|denygroups)'

Ricorda di controllare i file in /etc/ssh/sshd_config.d/. Dopo la modifica, esegui sudo sshd -t e ricarica il servizio.

Troppi tentativi

I fallimenti ripetuti possono portare a un nuovo sintomo: la connessione si interrompe prima della richiesta di password. È una penalità o un ban. Vedi kex_exchange_identification e fail2ban.

Domande

Perché SSH dice Permission denied se la password è giusta?

Spesso il nome utente è sbagliato, root non può usare la password (PermitRootLogin prohibit-password), l'account è bloccato oppure AllowUsers esclude l'utente. Il log del server indica il motivo vero.

Quanti tentativi di password concede SSH?

Il client chiede tre volte di base (NumberOfPasswordPrompts). Il server ne accetta fino a MaxAuthTries, 6 di base, contando tutti i metodi.

Un nome utente sbagliato dà un errore diverso?

No. Un utente che non esiste riceve la stessa richiesta di password e lo stesso rifiuto. Solo il log del server scrive invalid user.

Fonti

Altro in Messaggi di errore

Tutte le guide