Fehlermeldung
Load key "/path/to/key": incorrect passphrase supplied to decrypt private key
Auch ausgegeben als
- incorrect passphrase supplied to decrypt private key
- Bad passphrase, try again for /path/to/key:
Das interaktive `ssh-add` fragt mit „Bad passphrase, try again for …:“ erneut nach; `ssh` selbst fragt einfach noch einmal.
OpenSSH (ssh-keygen, ssh-add, ssh) — encrypted private key
Was der Fehler bedeutet
Die Schlüsseldatei ließ sich problemlos parsen und ist verschlüsselt; das Entschlüsseln mit der angegebenen Passphrase ist fehlgeschlagen. OpenSSH kann das von einer beschädigten Datei unterscheiden, weil der verschlüsselte Container einen Prüfwert enthält – diese Meldung bedeutet also wirklich „falsche Passphrase“, bei Schlüsseln im OpenSSH-Format ebenso wie bei verschlüsselten PEM-/PKCS#8-Schlüsseln. Eine vergessene Passphrase lässt sich auf keine Weise wiederherstellen; der Schlüssel muss ersetzt werden.
Warum der Fehler auftritt
Die Passphrase ist nicht die, die für diesen Schlüssel gesetzt wurde
häufigMehrere Schlüssel mit unterschiedlichen Passphrasen oder ein Schlüssel, dessen Passphrase auf einem anderen Rechner mit `ssh-keygen -p` geändert wurde.
Zusätzliche Zeichen aus einer Datei oder Variablen
gelegentlichPassphrasen, die mit abschließendem Zeilenumbruch oder mit Anführungszeichen aus Dateien oder Secrets gelesen und über `-P` oder Skripte für `SSH_ASKPASS` übergeben werden.
Tastaturlayout oder Feststelltaste
gelegentlichPassphrasen mit Zeichen, die je nach Layout an anderer Stelle liegen (y/z, Sonderzeichen), scheitern auf einem Rechner mit anderem Layout.
So behebst du den Fehler
- 1.
Passphrase interaktiv testen
Akzeptiert `ssh-keygen -y` die Passphrase, die du eintippst, liegt das Problem darin, wie dein Skript sie übergibt.
bash ssh-keygen -y -f ~/.ssh/id_ed25519 > /dev/null # prompts; succeeds only with the right passphrase ssh-keygen -p -f ~/.ssh/id_ed25519 # change the passphrase (needs the old one) - 2.
Agenten verwenden, statt Passphrasen zu übergeben
Entsperre den Schlüssel einmal in `ssh-agent` (oder im Schlüsselbund des Betriebssystems), statt die Passphrase in Skripte oder die CI einzubetten.
bash # Unlock once per session instead of typing or storing the passphrase in scripts eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 # macOS: keep it in the keychain ssh-add --apple-use-keychain ~/.ssh/id_ed25519