解決策 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