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
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
-
Ihr OpenSSH wurde ohne OpenSSL-Unterstützung erstellt. Obwohl
ssh -V
dass die Unterstützung aktiviert wurde, bedeutet das nicht automatisch diessh-add
Binärdatei ist die gleiche – sie könnte von einer anderen Teilinstallation stammen.Verwenden Sie
type -a ssh
undtype -a ssh-add
Installationsorte zu vergleichen.Sobald Sie den Pfad kennen, verwenden Sie
ldd /usr/bin/ssh-add
um zu überprüfen, ob es mitlibcrypto.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.