2つのファイル、id_rsa
およびid_rsa.pub
。 validペアであるかどうかを検証するために使用できるコマンドは何ですか?
ssh-keygen -y -e -f <private key>
Stack/Overflowで公開/秘密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によるコメントで説明されている動作によるものです。具体的には、秘密鍵ファイルを-fオプションパラメータとして-eオプションを使用すると、関連する公開鍵ファイルの内容が単にオロットされます(ただし再フォーマットされます)。
言い換えると、
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
のid_rsa
とssh
をlocalhost
に固定します。それが機能する場合、それらは一致します。
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost