回答:
私が好むssh-keygen -y -e -f <private key>
方法の代わりの受け入れ答えパブリック/プライベートDSA鍵ペアをテストするにはどうすればよいですか?スタックオーバーフロー。
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" )
テストしている公開鍵ファイルの入手先によっては、受け入れられた回答が偽陽性の結果になる場合があります。これは、@ 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)
おそらくこれはそれほど柔軟ではありませんが、私のニーズには適しています。たぶんそれは他の誰かを助ける。
彼らは、ローカルシステムにしている場合は、スティック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
ssh -v
とても役立ちます。