従来、同じ秘密鍵形式を使用していた OpenSSH は、OpenSSL で使用されていた古い PEM 形式と同じです。 (キーの解析に OpenSSL を使用するため、新しい PKCS#8 形式も受け入れます。)
したがって、問題は次のいずれかである可能性があります:
-
お使いの OpenSSL バージョンは、このキー形式の読み込みを拒否しています。誤って FIPS モードを有効にして、元の FIPS 検証の部分以外のアルゴリズムを拒否したのではないでしょうか?
キーを
openssl
にロードしてみてください コマンドライン ツール (はい、別の libcrypto にもリンクされている可能性があります) 、ldd で確認する必要があります ):openssl rsa -noout -text < id_rsa openssl pkey -noout -text < id_rsa
PKCS#8 形式に変換してみてください:
umask 077 openssl pkey < id_rsa > id_rsa.pkcs8 ssh-add id_rsa.pkcs8
-
OpenSSH は、OpenSSL サポートなしで構築されています。
ssh -V
でも サポートが有効になったと言っていますが、それは自動的に意味するわけではありませんssh-add
バイナリは同じです。別の部分的なインストールに由来する可能性があります。type -a ssh
を使用 とtype -a ssh-add
設置場所を比較します。パスがわかったら、
ldd /usr/bin/ssh-add
を使用しますlibcrypto.so
にリンクされていることを確認する (OpenSSL 暗号ライブラリ)
何も機能しない場合は、PuTTY を使用してキーを新しい OpenSSH 独自の形式に変換してみてください。 putty
をインストールします Fedora 用のパッケージ、および使用:
puttygen id_rsa -o id_rsa.newformat -O private-openssh-new
ssh-add id_rsa.newformat
<ブロック引用> また、奇妙な点:GNOME は、どうにかして seahorse でのログイン時にキーを追加することができます。
古い GNOME キーリング バージョンには、SSH エージェント コードの内部コピーがあり、システムの OpenSSH から独立しています。そのため、OpenSSH が受け入れないキーを受け入れます。 (しかし一方で、これは機能のサポート (Ed25519 キーなど) に関して深刻な遅れを意味し、最新の GNOME キーリングは代わりにシステム ssh-agent を使用するだけです。)
Gitlab で CI パイプライン変数を介して秘密鍵を渡すときに、同じエラー メッセージが表示されました。
このエラーは、変数の末尾に改行文字がないために発生し、手動で追加することで修正されました.
私の場合、問題は id_rsa ファイルの行末文字が正しくないことが原因でした。ファイルの内容をコピーした後、Windows テキスト エディターが助けを求めてきて、EOL を CR LF に変換しました。