Layer 8Ehrlicher Tech-Support
NetzwerkSchweregrad: LästigToo many authentication failures

SSH: Too many authentication failures vor dem Passwort

Der Server zählt jeden vom Agenten angebotenen Schlüssel als Versuch. MaxAuthTries erlaubt ab Werk 6 je Verbindung; IdentitiesOnly löst es.

Aufwand:
ca. 10 Min.
Voraussetzung:
Ein SSH-Client mit Zugriff auf die eigene ssh_config, Für die Serverseite Root-Rechte auf dem Zielsystem und Zugriff auf sshd_config, ssh-add, um die im Agenten geladenen Schlüssel zu sehen
Gilt für:
OpenSSH laut den Handbuchseiten sshd_config(5) und ssh_config(5) auf man7.org, abgerufen am 17.10.2026

Das Symptom

Ein neuer Server, ein frisch eingetragener öffentlicher Schlüssel, und die erste Verbindung endet mit Received disconnect from …: Too many authentication failures, bevor überhaupt ein Passwort abgefragt wurde. Gegen den alten Server klappt dieselbe Anmeldung weiterhin. Der Schlüssel wird daraufhin neu erzeugt, neu hochgeladen, die Rechte auf .ssh werden zum vierten Mal auf 700 gesetzt, und nichts ändert sich.

Das Verwirrende: Der Server lehnt nicht den richtigen Schlüssel ab. Er kommt gar nicht bis zu ihm.

Die „Layer 8“-Wahrheit

Der Client ist zu hilfsbereit. Läuft ein Agent, bietet ssh dem Server nacheinander jeden Schlüssel an, den der Agent hält. Für den Server ist jeder abgelehnte Schlüssel ein gescheiterter Anmeldeversuch, und davon erlaubt er nur eine begrenzte Zahl. Die Handbuchseite zu sshd_config sagt es knapp: „Specifies the maximum number of authentication attempts permitted per connection.“ Der Vorgabewert ist 6. Wer acht Schlüssel im Agenten hat und der passende steht an siebter Stelle, verbraucht die sechs Versuche mit Schlüsseln, die auf diesem Server nie jemand eingetragen hat. Danach trennt der Server die Verbindung; zum Passwort kommt es nicht mehr.

Deshalb klappt es gegen den alten Server: Dessen Schlüssel kommt an die Reihe, bevor das Kontingent verbraucht ist; der für den neuen Server nicht. Und deshalb ändert das Neuerzeugen nichts, denn an der Zahl der angebotenen Fremdschlüssel ändert es nichts. Der Server sieht in seinem Protokoll ab dem dritten Fehlschlag jeder Verbindung einen Eintrag, denn laut Handbuchseite gilt: „Once the number of failures reaches half this value, additional failures are logged.“ Ein Administrator, der dort nachsieht, hält den eigenen Kollegen für einen Angreifer mit einem Bündel geratener Schlüssel. Technisch stimmt das sogar.

Die Lösung liegt auf dem Client, nicht auf dem Server. IdentitiesOnly yes in der ssh_config sorgt laut Handbuchseite dafür, dass ssh nur die konfigurierten Identitätsdateien verwendet, selbst wenn der Agent, ein PKCS11Provider oder ein SecurityKeyProvider weitere Identitäten anbietet. Die Seite nennt den Zweck selbst: „This option is intended for situations where ssh-agent offers many different identities.“ Zusammen mit IdentityFile im Host-Block bietet der Client dann genau einen Schlüssel an, und der erste Versuch ist der richtige. Der Agent darf den Schlüssel weiter entsperrt halten; eingeschränkt wird, was angeboten wird, nicht, woher der private Teil kommt.

MaxAuthTries auf dem Server hochzusetzen ist die bequeme falsche Antwort. Die Grenze ist ein Schutz gegen Durchprobieren, und die Protokollschwelle bei der Hälfte des Werts wandert mit. Wer den Wert anheben muss, kann ihn laut Handbuchseite in einem Match-Block auf bestimmte Nutzer oder Herkunftsadressen beschränken, statt ihn allen zu schenken. Aber der Server tat die ganze Zeit, was er sollte. Er hat nur gezählt.

Die echte, verifizierte Lösung

1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:

  1. 1.

    Die im Agenten geladenen Schlüssel zählen

    ssh-add -l listet die Schlüssel, die der Agent gerade hält. Sind es mehr als sechs, kann der Server in der Vorgabe nicht einmal alle durchprobieren; er beendet die Verbindung vorher. Die Zahl erklärt dann auch, warum die Anmeldung gegen manche Hosts klappt und gegen andere nicht: Dort, wo der passende Schlüssel früh in der Liste liegt, reicht das Kontingent, dort, wo er spät liegt oder gar nicht, nicht. Auf Rechnern mit Agent-Weiterleitung aus einer anderen Sitzung kommen zudem fremde Schlüssel dazu.

    ssh-add -l
    
  2. 2.

    Den Ablauf mit -v sichtbar machen

    ssh -v zeigt, in welcher Reihenfolge der Client Schlüssel anbietet und welche der Server ablehnt. Die Meldung Too many authentication failures erscheint dann als Abbruch durch den Server, nicht als Fehler des Clients. Wer dort sieht, dass fünf fremde Schlüssel vor dem richtigen angeboten werden, hat die Ursache, ohne auf dem Server nachsehen zu müssen. Das Protokoll lohnt sich auch, um zu prüfen, ob der richtige Schlüssel überhaupt in der Liste ist.

    ssh -v ziel.example 2>&1 | grep -E 'Offering|Authentications that can continue|Too many'
    
  3. 3.

    Für den Host nur den einen Schlüssel anbieten

    In der eigenen ssh_config ein Host-Block mit IdentityFile und IdentitiesOnly yes. Damit bietet der Client für diesen Host laut Handbuchseite nur die konfigurierte Identitätsdatei an, auch wenn der Agent mehr anbietet. Der Agent kann den Schlüssel trotzdem entsperrt halten; die Option schränkt nur ein, was angeboten wird, nicht, woher die Entsperrung kommt. Für einen einmaligen Versuch geht dasselbe auf der Kommandozeile mit -o IdentitiesOnly=yes und -i.

    # ~/.ssh/config
    Host ziel.example
        HostName ziel.example
        User benutzer
        IdentityFile ~/.ssh/id_ed25519_ziel
        IdentitiesOnly yes
    
  4. 4.

    Als Server-Administrator den Wert bewusst wählen, nicht blind erhöhen

    MaxAuthTries in sshd_config legt die Versuche je Verbindung fest, Vorgabe 6; ab der Hälfte werden weitere Fehlschläge protokolliert. Wer den Wert anhebt, erlaubt jedem Client mehr Rateversuche pro Verbindung und verschiebt zugleich die Schwelle, ab der das Protokoll füllt. Die Handbuchseite führt MaxAuthTries unter den Schlüsselwörtern, die in einem Match-Block stehen dürfen; ein höherer Wert ließe sich also auf bestimmte Nutzer oder Adressen beschränken, statt global zu gelten. Nach einer Änderung die Konfiguration mit sshd -t prüfen und den Dienst neu laden.

    # /etc/ssh/sshd_config
    MaxAuthTries 6
    # Prüfen und neu laden
    sshd -t && systemctl reload sshd   # Dienstname je nach Distribution ssh oder sshd
    

Häufige Fragen (FAQ)

?Warum scheitert die Anmeldung, bevor ich überhaupt ein Passwort eingeben konnte?

Weil die Versuche schon verbraucht sind. Der Client bietet dem Server nacheinander jeden Schlüssel an, den der Agent kennt, und jeder abgelehnte Schlüssel ist aus Sicht des Servers ein gescheiterter Anmeldeversuch. Die Handbuchseite zu sshd_config beschreibt MaxAuthTries so: „Specifies the maximum number of authentication attempts permitted per connection.“ Der Vorgabewert ist 6. Wer sieben Schlüssel im Agenten hat und der passende liegt an achter Stelle, kommt nie bis zum Passwort, weil der Server die Verbindung nach dem sechsten Fehlschlag beendet.

?Was ist IdentitiesOnly und warum löst es das Problem?

Eine Client-Option in ssh_config, die den Agenten als Schlüsselquelle für diese Verbindung ausschaltet. Die Handbuchseite zu ssh_config beschreibt, dass ssh dann „should only use the configured authentication identity and certificate files“, also die Standarddateien oder die in ssh_config oder auf der Kommandozeile angegebenen, selbst wenn ssh-agent, ein PKCS11Provider oder ein SecurityKeyProvider weitere Identitäten anbietet. Der Wert muss yes oder no sein, no ist die Vorgabe. Die Seite nennt den Zweck selbst: „This option is intended for situations where ssh-agent offers many different identities.“ Also genau dieser Fall. Zusammen mit IdentityFile für den Host wird dann nur noch der eine richtige Schlüssel angeboten.

?Ist es sinnvoll, MaxAuthTries auf dem Server einfach hochzusetzen?

Nur, wenn man die Ursache nicht beheben kann oder will, denn die Grenze ist ein Schutz gegen Durchprobieren. Die Handbuchseite nennt dazu einen zweiten Effekt: „Once the number of failures reaches half this value, additional failures are logged.“ Ab dem dritten Fehlschlag einer Verbindung stehen die weiteren also im Protokoll, was bei Angriffen erwünscht ist. Ein hoher Wert verwässert beides. Die Korrektur gehört auf den Client, der die falschen Schlüssel anbietet; der Server tut, was er soll.

?Woran erkenne ich, dass wirklich der Agent die Ursache ist?

Mit ssh-add -l sieht man, wie viele Schlüssel der Agent geladen hat. Liegen dort mehr als die auf dem Server erlaubten Versuche, ist der Verdacht begründet. Ein Verbindungsversuch mit -v zeigt, welche Schlüssel nacheinander angeboten und abgelehnt werden, bevor die Meldung kommt. Und ein Versuch mit -o IdentitiesOnly=yes -i pfad/zum/schluessel, der sofort funktioniert, ist der Beweis. Dann fehlt nur noch der Eintrag in der ssh_config, damit es dauerhaft so bleibt.

Belege

Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Auch zu finden unter

Verwandte Fehler

NETLästigHost key verification failed

SSH: Host key verification failed

SSH warnt 'REMOTE HOST IDENTIFICATION HAS CHANGED' und 'Host key verification failed'? So prüfst du die Ursache und entfernst den alten Schlüssel sicher.

OSLästigUNPROTECTED PRIVATE KEY FILE

SSH: Permissions for key are too open

SSH verweigert den Schlüssel, weil die Rechte zu offen seien? Ein privater Schlüssel darf nur dir gehören — mit einem chmod ist es in Sekunden behoben.

OSAnfängerfehlercannot change locale

Linux: Cannot set LC_ALL to default locale

Ständige locale-Warnungen bei jedem Befehl? Die Sprachumgebung ist gesetzt, aber nicht erzeugt. Ein Generierungslauf beendet das Gemecker dauerhaft.