Zum Inhalt springen
ecdsa.com
OpenSSH server (sshd) logSSH

Fehlermeldung

userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

Auch ausgegeben als

  • userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
  • userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedKeyTypes [preauth]
  • userauth_pubkey: signature algorithm ssh-ed25519 not in PubkeyAcceptedAlgorithms [preauth]

Wortlaut je nach sshd-Version (in den OpenSSH-Quellen geprüft): ab 9.0 „signature algorithm … not in PubkeyAcceptedAlgorithms“; 8.5–8.9 „key type … not in PubkeyAcceptedAlgorithms“; 8.4 und älter „key type … not in PubkeyAcceptedKeyTypes“ (die Option wurde in 8.5 umbenannt). Der Algorithmus in der Meldung hängt vom Client und von der Einschränkung auf dem Server ab.

OpenSSH server (sshd) log — the client sees only "Permission denied (publickey)."

Was der Fehler bedeutet

Das Server-Log erklärt ein „Permission denied (publickey)“: Der Client hat einen Signaturalgorithmus verwendet, den der Server nicht akzeptiert. Bei `ssh-rsa` ist das das RSA-Signaturverfahren auf Basis von SHA-1, das seit OpenSSH 8.8 (2021) standardmäßig deaktiviert ist. Der RSA-Schlüssel selbst ist in Ordnung – derselbe Schlüssel funktioniert mit den Algorithmen `rsa-sha2-256`/`rsa-sha2-512` –, aber der Client (ein altes OpenSSH, eine veraltete Bibliothek oder ein eingebettetes Gerät) kennt nur die SHA-1-Variante.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Modernen Schlüssel oder modernen Client verwenden

    Ein Ed25519-Schlüssel umgeht das RSA/SHA-1-Problem vollständig; andernfalls aktualisiere die Client-Bibliothek, damit sie `rsa-sha2-*` aushandelt.

    bash
    # Best: a modern key type, which every current client signs correctly
    ssh-keygen -t ed25519 -C "deploy@ci" -f ~/.ssh/deploy_ed25519
    # Or keep the RSA key and use a client that supports rsa-sha2-256/512
    # (OpenSSH >= 7.2, Paramiko >= 2.9, JSch fork 0.2.x, golang.org/x/crypto >= 2022, PuTTY >= 0.75)
  2. 2.

    ssh-rsa eng begrenzt zulassen, wenn es sein muss

    Ein `Match`-Block für ein einzelnes Altgerät hält SHA-1-Signaturen von allen anderen fern. Betrachte ihn als vorübergehende Lösung.

    text
    # /etc/ssh/sshd_config.d/legacy-device.conf - only for one legacy client, and remove it afterwards
    Match Address 10.0.5.17
        PubkeyAcceptedAlgorithms +ssh-rsa

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen