ssh: Fehler beim Laden des Schlüssels "./id_rsa": ungültiges Format

524
FlorianLudwig

Aus irgendeinem Grund "brach" einer meiner SSH-Schlüssel - er hörte einfach auf zu funktionieren:

$ ssh-add ./id_rsa Error loading key "./id_rsa": invalid format 

Beim Kopieren des Schlüssels in eine saubere VM funktioniert der Schlüssel. Auch mit der exakt gleichen ssh-Version (OpenSSH_7.8p1, OpenSSL 1.1.0i-fips vom 14. August 2018 auf Fedora 28). Also muss es mit irgendeiner Konfig auf meinem System zusammenhängen, nehme ich an.

# cat ./id_rsa -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,...  ... -----END RSA PRIVATE KEY----- 

Auch eigenartig: GNOME schafft es irgendwie, den Schlüssel beim Login mit Seepferdchen hinzuzufügen. Dann ssh-add -Llistet den Schlüssel auf, aber er ist nicht verwendbar:

sign_and_send_pubkey: signing failed: agent refused operation 
2

1 Antwort auf die Frage

2
grawity

Normalerweise ist OpenSSH, das dasselbe private Schlüsselformat verwendet, identisch mit dem älteren PEM-Format, das von OpenSSL verwendet wird. (Da OpenSSL zum Analysieren des Schlüssels verwendet wird, wird auch das neuere PKCS # 8-Format akzeptiert.)

Das Problem kann also sein:

  1. Ihre OpenSSL-Version lehnt das Laden dieses Schlüsselformats ab. Vielleicht hat es versehentlich den FIPS-Modus aktiviert und alle Algorithmen mit Ausnahme des Teils seiner ursprünglichen FIPS-Validierung abgelehnt?

    Versuchen Sie, den Schlüssel in das opensslBefehlszeilentool zu laden (das ja auch mit einem anderen libcrypto verknüpft sein könnte und Sie dies mit ldd überprüfen sollten ):

    openssl rsa -noout -text < id_rsa openssl pkey -noout -text < id_rsa 

    Versuchen Sie es in das PKCS # 8-Format zu konvertieren:

    umask 077 openssl pkey < id_rsa > id_rsa.pkcs8 ssh-add id_rsa.pkcs8 
  2. Ihr OpenSSH wurde ohne OpenSSL-Unterstützung erstellt. Auch wenn ssh -Vdie Unterstützung aktiviert war, bedeutet dies nicht automatisch, dass die ssh-addBinärdatei gleich ist - sie könnte von einer anderen Teilinstallation stammen.

    Verwenden Sie type -a sshund type -a ssh-add, um die Installationsorte zu vergleichen.

    Wenn Sie den Pfad kennen, ldd /usr/bin/ssh-addüberprüfen Sie, ob er mit dem Pfad verbunden ist libcrypto.so(die OpenSSL-Verschlüsselungsbibliothek).


Wenn nichts funktioniert, konvertieren Sie Ihren Schlüssel mit ... PuTTY in das neue OpenSSH-proprietäre Format. Installieren Sie das puttyPaket für Fedora und verwenden Sie:

puttygen id_rsa -o id_rsa.newformat -O private-openssh-new ssh-add id_rsa.newformat 

Auch eigenartig: GNOME schafft es irgendwie, den Schlüssel beim Login mit Seepferdchen hinzuzufügen.

Ältere GNOME-Schlüsselringversionen verfügen über eine interne Kopie des SSH-Agentencodes und sind vom System OpenSSH unabhängig. Sie akzeptieren also Schlüssel, die Ihr OpenSSH nicht akzeptiert. (Andererseits bedeutet dies eine erhebliche Verzögerung bei der Funktionsunterstützung (z. B. Ed25519-Schlüssel), und der neueste GNOME-Schlüsselring verwendet stattdessen nur das System ssh-agent.)

Danke für die ausführliche Antwort! 1. das Öffnen des Schlüssels mit openssl funktioniert: `` openssl rsa -noout -text <id_rsa openssl pkey -noout -text <id_rsa `` `Ich habe auch andere ssh-Schlüssel, die den gleichen Header haben und gut funktionieren. 2. Die Konvertierung in das PKCS # 8-Format funktioniert einwandfrei. Ich kann den Schlüssel in PKCS # 8 3 verwenden. Dann funktionieren andere Schlüssel nicht oder nicht? 4. In Bezug auf GNOME handelt es sich um die aktuelle Version von GNOME, auf der der OpenSSH-Agent ausgeführt wird (wie von `ps` bestätigt). Ich habe also eine Problemumgehung, danke! Ich wundere mich immer noch WARUM. Was ist los / was ist passiert ... FlorianLudwig vor 6 Jahren 0