Come appare il messaggio
Received disconnect from 203.0.113.10 port 22:2: Too many authentication failures
Disconnected from 203.0.113.10 port 22
user@203.0.113.10: Permission denied (publickey).Cause frequenti
- L'ssh-agent contiene molte chiavi e le offre una dopo l'altra.
- Non è impostato alcun
IdentityFileper l'host, quindi ssh prova tutte le chiavi predefinite e dell'agent. - La chiave giusta non è autorizzata sul server.
MaxAuthTriessul server è basso.- Le vecchie chiavi in
~/.sshvengono provate per prime.
Verifica
- Quante chiavi contiene l'agent?
ssh-add -l - Quali chiavi vengono offerte, e in che ordine?
ssh -v user@server.example.com 2>&1 | grep -iE 'offering|authentications that can continue' - Il limite sul server (console o altro accesso)
sshd -T | grep -i maxauthtries
Soluzione
- Offri solo la chiave che indichi:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 user@server.example.com. - Rendilo permanente in
~/.ssh/config:Host server,IdentityFile ~/.ssh/id_ed25519,IdentitiesOnly yes. - Togli dall'agent le chiavi inutili:
ssh-add -D, poi aggiungi solo ciò che serve conssh-add ~/.ssh/id_ed25519. - Controlla che la chiave pubblica sia in
~/.ssh/authorized_keyssul server, con i permessi giusti. - Alza
MaxAuthTriessul server solo se proprio serve; meno chiavi è la soluzione migliore.
Domande frequenti
Perché non riesco nemmeno a scrivere la password?
I tentativi con le chiavi vengono prima. Il limite si raggiunge prima che ssh arrivi all'autenticazione con password.
È lo stesso di un ban di fail2ban?
No. Questa disconnessione è una singola connessione che raggiunge il limite per connessione. Un ban di fail2ban blocca il tuo indirizzo e si manifesta come timeout o rifiuto, vedi porta 22 timed out.