GNU/Linux >> Linux の 問題 >  >> Linux

RSA 公開鍵 / 秘密鍵のペアが一致するかどうかを確認する方法

解決策 1:

ssh-keygen -y -e -f <private key> の方がいいと思います How do you test a public/private DSA keypair? の受け入れられた回答の代わりに スタック オーバーフローについて

ssh-keygen -y -e -f <private key> 秘密鍵を受け取り、利用可能な公開鍵と直接比較できる対応する公開鍵を出力します。 (ヒント:コメントやキーオプションに注意してください。)

(一体どうやってそんなことをしているの? 公開鍵が直接的または間接的に秘密鍵にエンコードされていることを願うしかありません...)

私はこれを自分で必要とし、次の Bash ワンライナーを使用しました。キーが一緒に属している場合、何も出力されません。少し -q を適用します スクリプト内の diff に対して、diff はリターン コードのみを適切に設定します。

PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )

解決策 2:

テストしている公開鍵ファイルをどこで取得するかによっては、受け入れられた回答が偽陽性の結果をもたらす可能性があります。これは、@drewbenn のコメントで説明されている動作によるものです。具体的には、-e オプションを -f オプション パラメーターとして秘密鍵ファイルと共に使用すると、関連付けられた公開鍵ファイルの内容を単純にオウム返し (ただし、再フォーマット) します。

つまり、

ssh-keygen -y -f id_rsa

(どうやら) 生成 公開鍵の値、および

ssh-keygen -y -e -f id_rsa

既存のキーを単純に出力 (および再フォーマット) します。 id_rsa.pub何でも .

私の場合、ペアが破損していないことを確認する必要があります。そこで、以下を比較することにしました:

ssh-keygen -y -f id_rsa | cut -d' ' -f 2

cut -d' ' -f 2 id_rsa.pub

したがって:

diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)

おそらく、これはそれほど柔軟ではありませんが、私のニーズには適しています。多分それは他の誰かを助けるでしょう.

解決策 3:

それらがローカル システム上にある場合は、id_rsa.pub を貼り付けます あなたの $HOME/.ssh/authorized_keys で そして ssh localhost まで id_rsa を使用して 鍵。うまくいけば、一致します。

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost

Linux
  1. SSHキーペアを生成する方法(例付き)

  2. Ssh –プライベートSshキーが与えられた場合、公開キーを回復するにはどうすればよいですか?

  3. Ssh証明書が指定されたSshCa秘密鍵によって署名されたことを確認する方法は?

  1. SFTP用にFileZillaに秘密鍵をインポートする方法

  2. Ssh秘密鍵から公開鍵を取得する方法は?

  3. Linux で SSH の「公開/秘密鍵」ログイン用の SSH キーをセットアップする方法

  1. エクスポートされたOpenpgpの公開鍵と秘密鍵のペアを一致させる方法は?

  2. VPNの作り方

  3. 公開鍵暗号とは何ですか(VPNの仕組み、パート2)