web-dev-qa-db-ja.com

ssh:キー「./id_rsa」の読み込みエラー:無効な形式

何らかの理由で、私の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
8
FlorianLudwig

従来、同じ秘密鍵形式を使用するOpenSSHは、OpenSSLで使用される古いPEM形式と同じです。 (キーの解析にOpenSSLを使用するため、新しいPKCS#8形式も受け入れます。)

したがって、問題は次のいずれかになります。

  1. お使いの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
    
  2. 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を使用するだけです。)

12
user1686

私の場合、問題はid_rsaファイルに誤った行末文字を引き起こしましたが、私のWindowsテキストエディターをコピーすると、EOLがCR LFに変換されます。

2
Kamil