Zum Inhalt springen
ecdsa.com
OpenSSHWeitere Tools

Fehlermeldung

Load key "/path/to/key": invalid format

Der Pfad wird bei jedem Aufruf eingesetzt. Der Wortlaut hängt von der Krypto-Bibliothek ab, mit der OpenSSH gebaut wurde: Mit OpenSSL 1.1 oder LibreSSL (macOS) gibt jeder der unten genannten Fehler „invalid format“ aus; Builds mit OpenSSL 3 (Ubuntu 22.04 und neuer, Debian 12 und neuer) geben für die meisten davon „error in libcrypto“ aus und behalten „invalid format“ für beschädigte Schlüssel im PEM-Format bei. Ein verändertes Zeichen im Inhalt ergibt bei allen „unknown or unsupported key type“.

OpenSSH — ssh, ssh-keygen, ssh-add

Was der Fehler bedeutet

OpenSSH hat versucht, eine Datei mit einem privaten Schlüssel zu laden, und konnte sie in keinem der Formate parsen, die es kennt (OPENSSH PRIVATE KEY, PKCS#8, altes PEM). Die Datei ist beschädigt, abgeschnitten, liegt in einem fremden Format wie .ppk von PuTTY vor oder ist überhaupt kein privater Schlüssel – das ist ein Fehler im Dateiformat, der noch vor jeder Passphrase-Abfrage und jeder Interaktion mit dem Server auftritt.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Zuerst den Rahmen der Datei untersuchen

    Die erste und die letzte Zeile plus eine Gültigkeitsprobe (-y gibt den öffentlichen Schlüssel aus, wenn – und nur wenn – sich der private Schlüssel parsen lässt) bestimmen die Art des Fehlers in Sekunden.

    bash
    head -1 ~/.ssh/id_ecdsa      # -----BEGIN OPENSSH PRIVATE KEY-----
    tail -c 50 ~/.ssh/id_ecdsa | xxd | tail -1   # must end with 0a (newline)
    ssh-keygen -y -f ~/.ssh/id_ecdsa             # parses? prints the public key
  2. 2.

    PuTTY-Schlüssel ins OpenSSH-Format konvertieren

    Einmalige Konvertierung mit puttygen; danach funktioniert der Schlüssel mit ssh, ssh-add und ssh-agent.

    bash
    puttygen key.ppk -O private-openssh -o ~/.ssh/id_converted
    chmod 600 ~/.ssh/id_converted
  3. 3.

    Schlüssel verlustfrei übertragen

    Übertrage Schlüsseldateien mit scp/rsync statt über die Zwischenablage, belasse die Berechtigungen bei 600, und lässt sich der private Schlüssel nicht wiederherstellen, erzeuge ein neues Paar – modernes OpenSSH bevorzugt Ed25519.

    bash
    scp -p old-host:~/.ssh/id_ecdsa ~/.ssh/
    # or start clean:
    ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen