Was Sie sehen
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).
SSH fragt standardmäßig dreimal und gibt dann die letzte Zeile aus. Die Liste in Klammern zeigt, was der Server noch akzeptiert. Enthält sie nicht password, oder bekamen Sie nie eine Passwortabfrage, haben Sie ein anderes Problem: siehe Permission denied (publickey).
Die Passwort-Anmeldung einzeln testen
Das schließt Schlüssel und Agents aus, und es fragt einmal:
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -o NumberOfPasswordPrompts=1 user@server
Ursache 1: der falsche Benutzername
Ohne user@ sendet SSH Ihren lokalen Benutzernamen oder den aus Ihrer Konfiguration:
ssh -G server | grep '^user '
Ein Benutzer, der nicht existiert, bekommt dieselbe Passwortabfrage und dieselbe Ablehnung, es sieht also genau wie ein falsches Passwort aus. Cloud-Images nutzen oft ubuntu, debian oder ec2-user statt root.
Um den Benutzer für einen Host einmal festzulegen, setzen Sie eine User-Zeile in seinen Block der SSH-Konfigurationsdatei.
Ursache 2: das falsche Passwort
Prüfen Sie das Naheliegende: Tastaturlayout, Feststelltaste und versteckte Zeichen beim Einfügen. SSH zeigt beim Tippen nichts an. Auch die Abfrage zählt: Enter passphrase for key will die Passphrase Ihrer Schlüsseldatei, während user@server's password: das Passwort des Kontos auf dem Server will.
Das Log des Servers lesen
Können Sie den Server auf anderem Weg erreichen, etwa über die Konsole eines Anbieters, klärt das die Sache. Auf Debian und Ubuntu:
sudo journalctl -u ssh -n 30
Auf Red-Hat-Systemen nehmen Sie -u sshd. Ältere Systeme loggen nach /var/log/auth.log oder /var/log/secure.
| Logzeile | Bedeutung |
|---|---|
Failed password for invalid user name | Dieser Benutzer existiert auf dem Server nicht oder wird durch AllowUsers ausgeschlossen |
User name from ... not allowed because not listed in AllowUsers | Der Benutzer existiert, steht aber nicht auf der Liste |
Failed password for name | Der Benutzer existiert und die Passwortprüfung ist fehlgeschlagen. Es ist das falsche Passwort oder eine der Ursachen 3 und 4 |
| Überhaupt keine Zeile | Sie erreichen einen anderen Server oder Port. Prüfen Sie ssh -G server | grep -E '^(hostname|port) ' |
Ursache 3: root darf sich nicht mit Passwort anmelden
Der Standard für PermitRootLogin ist prohibit-password. Mit dieser Einstellung zeigt sshd die Abfrage weiter an und antwortet mit dieser Meldung, auch wenn das Root-Passwort stimmt, und das Log sagt Failed password for root. Das Log verrät den wahren Grund also nicht. Fragen Sie sshd direkt:
sudo sshd -T -C user=root,host=server,addr=203.0.113.10 | grep -i '^permitrootlogin'
Ein Ergebnis von prohibit-password oder dessen älterem Namen without-password bestätigt es. Melden Sie sich als normaler Benutzer an und nutzen Sie sudo, oder nutzen Sie einen Schlüssel für root. Siehe Root-Login deaktivieren.
Ursache 4: Das Konto ist gesperrt
sudo passwd -S name
Das zweite Feld ist L für gesperrt, P für ein nutzbares Passwort und NP für kein Passwort. Ein gesperrtes Konto führt zur selben Ablehnung, und das Log sagt wieder nur Failed password. Entsperren Sie es oder setzen Sie ein neues Passwort:
sudo passwd -u name
sudo passwd name
Ein abgelaufenes Konto liefert einen anderen Text, Your account has expired; please contact your system administrator. Prüfen Sie es mit sudo chage -l name. Eine nologin-Shell meldet Sie an und gibt dann This account is currently not available. aus.
Ursache 5: AllowUsers, DenyUsers und ihre Gruppenvarianten
Diese Regeln lehnen einen Benutzer auch mit richtigem Passwort ab. Sehen Sie nach, was für diesen Benutzer gilt, einschließlich Match-Blöcken:
sudo sshd -T -C user=name,host=server,addr=203.0.113.10 | grep -iE '^(allowusers|denyusers|allowgroups|denygroups)'
Denken Sie daran, auch die Dateien in /etc/ssh/sshd_config.d/ zu prüfen. Führen Sie nach dem Bearbeiten sudo sshd -t aus und laden Sie den Dienst neu.
Zu viele Versuche
Wiederholte Fehlschläge können zu einem neuen Symptom führen: Die Verbindung bricht vor der Passwortabfrage ab. Das ist eine Sperrzeit oder ein Bann. Siehe kex_exchange_identification und fail2ban.
Fragen
Warum meldet SSH Permission denied, obwohl das Passwort stimmt?
Oft ist der Benutzername falsch, root darf kein Passwort verwenden (PermitRootLogin prohibit-password), das Konto ist gesperrt oder AllowUsers schließt den Benutzer aus. Das Log des Servers nennt den wahren Grund.
Wie viele Passwortversuche erlaubt SSH?
Der Client fragt standardmäßig dreimal (NumberOfPasswordPrompts). Der Server erlaubt bis zu MaxAuthTries, standardmäßig 6, über alle Methoden gezählt.
Gibt ein falscher Benutzername einen anderen Fehler?
Nein. Ein Benutzer, den es nicht gibt, bekommt dieselbe Passwortabfrage und dieselbe Ablehnung. Nur das Log des Servers zeigt invalid user.
Quellen
- sshd_config(5), PermitRootLogin, AllowUsers
- ssh_config(5), NumberOfPasswordPrompts
- passwd(1), Linux man-pages