Zum Inhalt springen
ecdsa.com
OpenSSH (ssh, ssh-add, ssh-keygen, git over SSH)SSH

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

So behebst du den Fehler

  1. 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. 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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen