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
Kopieren und Einfügen hat den Schlüssel beschädigt
häufigSchlüssel, die über Chat, E-Mail oder Terminals übertragen werden, verlieren abschließende Zeilenumbrüche, bekommen umbrochene Zeilen oder typografische Zeichen hinzu oder verlieren die abschließenden Bindestriche. Der base64-Inhalt eines Blocks vom Typ OPENSSH PRIVATE KEY reagiert empfindlich auf die Länge; ein einziges verlorenes Zeichen macht die Datei ungültig. (Schon ein fehlender abschließender Zeilenumbruch allein ist ein klassischer Auslöser.)
.ppk-Datei von PuTTY mit OpenSSH verwendet
häufigDas Schlüsselformat von PuTTY („PuTTY-User-Key-File-2: ...“) ist nicht das von OpenSSH. Zeigt ssh -i auf eine .ppk-Datei, scheitert der Aufruf genau hier; der Schlüssel muss einmalig konvertiert werden.
Öffentlicher Schlüssel, wo der private Schlüssel hingehört
häufigssh -i id_ecdsa.pub (die .pub-Datei) oder eine Zeile aus authorized_keys, als Identitätsdatei gespeichert – der Loader für private Schlüssel findet den Inhalt eines öffentlichen Schlüssels und meldet invalid format.
Abgeschnittene oder nur teilweise synchronisierte Datei
gelegentlichEine Schlüsseldatei, die beim Synchronisieren mit der Cloud oder durch ein abgebrochenes scp mitten im Inhalt abgeschnitten wurde, ergibt beim Parsen nur Datenmüll. Reproduziert: Das Abschneiden einer gültigen Schlüsseldatei ergibt unter OpenSSH 8.4 und unter macOS genau „invalid format“.
So behebst du den Fehler
- 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.
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.
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