Fehlermeldung
Load key "/path/to/key": error in libcrypto
Auch ausgegeben als
- error in libcrypto
Der Pfad ist die Schlüsseldatei, die du verwendet hast. Manche Beschädigungen führen stattdessen zu „Load key "…": invalid format“ (zum Beispiel bei PEM-Schlüsseln, denen eine Zeile in der Mitte fehlt); die Ursachen überschneiden sich.
OpenSSH (ssh, ssh-add, ssh-keygen, git over SSH) — key file could not be parsed
Was der Fehler bedeutet
OpenSSH konnte die Datei mit dem privaten Schlüssel nicht in seinem eigenen Format parsen und hat sie dann als PEM-Schlüssel an OpenSSL (libcrypto) übergeben, was ebenfalls fehlschlug – deshalb ist der gemeldete Fehler das allgemeine „error in libcrypto“ und kein präziser Grund. Im aktuellen OpenSSH (geprüft mit 10.0) endet fast jede Beschädigung einer Datei im Format `OPENSSH PRIVATE KEY` hier: Windows-Zeilenenden, ein fehlender abschließender Zeilenumbruch, eine verlorene Zeile oder ein Schlüssel, der auf eine einzige Zeile zusammengezogen wurde. Beschädigte PEM-/PKCS#8-Schlüssel landen hier, wenn sie abgeschnitten oder auf eine Zeile zusammengezogen wurden, und ebenso `.ppk`-Dateien von PuTTY.
Warum der Fehler auftritt
Windows-Zeilenenden (CRLF)
häufigSchlüssel, die in Secret-Felder einer CI eingefügt, unter Windows bearbeitet oder mit `core.autocrlf` ausgecheckt wurden, bekommen Zeilenenden `\r\n`. Schlüssel im OpenSSH-Format lassen sich dann nicht parsen.
Der abschließende Zeilenumbruch wurde entfernt
häufigViele Secret Stores und Konstrukte wie `echo -n`/`$(...)` entfernen den abschließenden Zeilenumbruch. Bei Schlüsseln im OpenSSH-Format reicht das allein, damit das Laden scheitert.
Zeilen verloren, abgeschnitten oder zusammengefügt
häufigUmgebungsvariablen, die Zeilenumbrüche zu Leerzeichen zusammenfassen, Kopieren und Einfügen aus einem Chat oder Größenlimits, die den Schlüssel abschneiden.
Kein OpenSSH- oder PEM-Schlüssel
gelegentlich`.ppk`-Dateien von PuTTY, öffentliche Schlüssel, Zertifikate oder JWKs, die als Identitätsdateien angegeben werden, sind keine privaten Schlüssel, die OpenSSH lesen kann.
So behebst du den Fehler
- 1.
CI-Schlüssel bytegenau schreiben
Entferne `\r`, schließe mit einem Zeilenumbruch ab, setze den Modus 600 und teste sofort mit `ssh-keygen -y`, damit der Setup-Schritt bei einem defekten Secret mit einem klaren Fehler abbricht.
bash # CI: write the key exactly, normalise line endings, guarantee the final newline, restrict permissions install -d -m 700 ~/.ssh printf '%s\n' "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keygen -y -f ~/.ssh/id_ed25519 > /dev/null && echo "key parses" - 2.
Rahmen der Datei ansehen
`file`, die erste Zeile und die letzten Bytes zeigen CRLF-Zeilenenden, einen fehlenden Zeilenumbruch oder einen einzeiligen Schlüssel sofort.
bash file ~/.ssh/id_ed25519 # "OpenSSH private key" vs "with CRLF line terminators" head -1 ~/.ssh/id_ed25519; tail -c 40 ~/.ssh/id_ed25519 | od -c | tail -3 # framing and final "\n" wc -l ~/.ssh/id_ed25519 # a one-line file means the newlines were lost