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:
-
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
opensslzu 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_rsaVersuchen Sie, es in das PKCS#8-Format zu konvertieren:
umask 077 openssl pkey < id_rsa > id_rsa.pkcs8 ssh-add id_rsa.pkcs8 -
Ihr OpenSSH wurde ohne OpenSSL-Unterstützung erstellt. Obwohl
ssh -Vdass die Unterstützung aktiviert wurde, bedeutet das nicht automatisch diessh-addBinärdatei ist die gleiche – sie könnte von einer anderen Teilinstallation stammen.Verwenden Sie
type -a sshundtype -a ssh-addInstallationsorte zu vergleichen.Sobald Sie den Pfad kennen, verwenden Sie
ldd /usr/bin/ssh-addum zu überprüfen, ob es mitlibcrypto.soverknü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.