何らかの理由で、私のsshキーの1つが「壊れた」だけです。
$ ssh-add ./id_rsa
Error loading key "./id_rsa": invalid format
クリーンなVM内にキーをコピーすると、キーは機能します。まったく同じsshバージョン(OpenSSH_7.8p1、OpenSSL 1.1.0i-fips、2018年8月14日、Fedora 28)。だから私が想定している私のシステムの設定に関連している必要があります。
# cat ./id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,...
...
-----END RSA PRIVATE KEY-----
また、奇妙です:GNOMEは、どういうわけか、タツノオトシゴでのログイン時にキーを追加します。次にssh-add -L
はキーをリストしますが、使用できません:
sign_and_send_pubkey: signing failed: agent refused operation
従来、同じ秘密鍵形式を使用する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独自の形式に変換してみてください。 FedoraのPuTTY
パッケージをインストールして、以下を使用します:
puttygen id_rsa -o id_rsa.newformat -O private-openssh-new
ssh-add id_rsa.newformat
また、奇妙です:GNOMEは、どういうわけか、タツノオトシゴでのログイン時にキーを追加します。
古いGNOMEキーリングバージョンには、SSHエージェントコードの内部コピーがあり、システムOpenSSHから独立しています。したがって、彼らはあなたのOpenSSHが受け付けない鍵を受け付けます。 (しかし、一方で、これは機能サポート(Ed25519キーなど)の点で重大な遅れを意味し、最新のGNOMEキーリングは代わりにシステムのssh-agentを使用するだけです。)
私の場合、問題はid_rsaファイルに誤った行末文字を引き起こしましたが、私のWindowsテキストエディターをコピーすると、EOLがCR LFに変換されます。