GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Das traditionell von OpenSSH verwendete Format des gleichen privaten Schlüssels ist identisch mit dem älteren PEM-Format, das von OpenSSL verwendet wird. (Da OpenSSL zum Analysieren des Schlüssels verwendet wird, akzeptiert es auch das neuere PKCS#8-Format.)

Das Problem kann also eines der folgenden sein:

  1. Ihre OpenSSL-Version weigert sich, dieses Schlüsselformat zu laden. Vielleicht hat es versehentlich den FIPS-Modus aktiviert und verweigert alle Algorithmen mit Ausnahme des Teils seiner ursprünglichen FIPS-Validierung?

    Versuchen Sie, den Schlüssel in openssl zu laden Befehlszeilentool (das ja auch mit einer anderen libcrypto verknüpft sein könnte , und Sie sollten mit ldd nachsehen ):

    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. Obwohl ssh -V dass die Unterstützung aktiviert wurde, bedeutet das nicht automatisch die ssh-add Binärdatei ist die gleiche – sie könnte von einer anderen Teilinstallation stammen.

    Verwenden Sie type -a ssh und type -a ssh-add Installationsorte zu vergleichen.

    Sobald Sie den Pfad kennen, verwenden Sie ldd /usr/bin/ssh-add um zu überprüfen, ob es mit libcrypto.so verknüpft ist (die OpenSSL-Verschlüsselungsbibliothek).

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

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

Auch merkwürdig:GNOME schafft es irgendwie, den Schlüssel bei der Anmeldung mit Seepferdchen hinzuzufügen.

Ältere GNOME Keyring-Versionen haben eine interne Kopie des SSH-Agentencodes und sind unabhängig vom System OpenSSH. Sie akzeptieren also Schlüssel, die Ihr OpenSSH nicht akzeptiert. (Aber auf der anderen Seite bedeutet dies eine erhebliche Verzögerung in Bezug auf die Unterstützung von Funktionen (z. B. Ed25519-Schlüssel), und der neueste GNOME-Schlüsselbund verwendet stattdessen einfach den System-SSH-Agent.)


Ich habe dieselbe Fehlermeldung erhalten, als ich den privaten Schlüssel über eine CI-Pipeline-Variable in Gitlab übergeben habe.

Der Fehler wurde dadurch verursacht, dass am Ende der Variablen kein Zeilenumbruchzeichen vorhanden war, und wurde durch manuelles Hinzufügen behoben.


In meinem Fall wurde das Problem durch falsche Zeilenendezeichen in der Datei id_rsa verursacht. Nach dem Kopieren des Dateiinhalts wollte mir der Windows-Texteditor helfen und konvertierte EOLs in CR LF.


Linux
  1. Gpg-Fehler, Signaturen ungültig für „http://archive.canonical.com Precise Release“?

  2. Ungültiger Ssh-Schlüsselfehler in Juju bei Verwendung mit Maas?

  3. So aktualisieren Sie Homebrew mit Cron unter Mac OS

  4. unix:///var/run/supervisor.sock keine solche Datei

  5. Holen Sie sich den Fingerabdruck des SSH-Schlüssels im (alten) Hex-Format in der neuen Version von openssh

Ansible SSH-Authentifizierung und Rechteausweitung

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Ssh – Bei einem privaten Ssh-Schlüssel, wie kann man den öffentlichen Schlüssel wiederherstellen?

Linux – Vm kann nicht gestartet werden:Fehler 13:Ungültiges oder nicht unterstütztes ausführbares Format?

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?