パブリック/プライベートDSAキーペアをどのようにテストしますか?

StackOverflow https://stackoverflow.com/questions/274560

  •  07-07-2019
  •  | 
  •  

質問

特定の秘密鍵が特定の公開鍵と一致することを確認する簡単な方法はありますか?いくつかの* .pubファイルといくつかの* .keyファイルがあるので、どちらを使用するかを確認する必要があります。

再び、これらはpub / keyファイル、DSAです。

私は本当にある種のワンライナーを好むだろう...

役に立ちましたか?

解決

私にとってはうまくいくと思われる方法を見つけました:

ssh-keygen -y -f <private key file>

そのコマンドは、指定された秘密鍵の公開鍵を出力するため、出力を各* .pubファイルと比較するだけです。

他のヒント

これらのコマンドを使用して、モジュラスのMD5ハッシュを常に比較します:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

ハッシュが一致する場合、これらの2つのファイルは一緒になります。

DSAキーの場合、使用

 openssl dsa -pubin -in dsa.pub -modulus -noout

公開鍵を印刷するには、

 openssl dsa -in dsa.key -modulus -noout

秘密鍵に対応する公開鍵を表示し、それらを比較します。

x.509証明書内に公開鍵があると仮定し、それらがRSA鍵であると仮定して、各公開鍵に対して、

    openssl x509 -in certfile -modulus -noout

秘密鍵ごとに、

    openssl rsa -in keyfile -modulus -noout

次に、モジュラスでキーを一致させます。

diffを使用すると、チェックが簡単になります:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

唯一の奇妙なことは、ファイルが同じ場合はdiffが何も表示しないことです。したがって、パブリックとプライベートが一致しない場合にのみ通知されます。

公開鍵を削除し、秘密鍵から新しいものを生成します。それらを別々のディレクトリに保管するか、命名規則を使用してまっすぐに保管してください。

WindowsでGUIを使用する場合、 puttygen に秘密鍵をインポートできます:

ここに画像の説明を入力してください

一度インポートすると、その公開鍵を保存して自分のものと比較できます。

次のコマンドを入力して、秘密鍵と公開鍵が$ USER / .sshディレクトリ内の一致したセット(同一)であるか、一致したセット(異なる)ではないかを確認します。 cutコマンドは、公開キーの行末のコメントが比較されないようにし、キーのみを比較できるようにします。

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

出力は、これらのいずれかの行のようになります。

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

ユーザーが〜/ .ssh / filesおよび一致するキーセットのファイル許可を確認するために使用するシェルスクリプトを作成しました。 sshをセットアップするユーザーインシデントに関する私の課題を解決します。あなたを助けるかもしれません。 https://github.com/BradleyA/docker-security-infrastructure/ tree / master / ssh

注:以前の回答(2018年3月)は、opensshの最新リリースでは機能しなくなりました。前の答え:diff -qs <!> lt;(ssh-keygen -yf〜/ .ssh / id_rsa)<!> lt;(cut -d '' -f 1,2〜/ .ssh / id_rsa.pub)

公開キーで何かを暗号化し、どの秘密キーがそれを解読するかを確認します。

このコードプロジェクトの記事は、Jeff Atwoodが実装した簡易版.NET暗号クラスのラッパー。これらのキーがRSAで使用するために作成されたと仮定すると、非対称クラスを使用して公開キーを暗号化し、秘密キーを使用して暗号化を解除します。

何も返されない場合、それらは一致します:

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

puttygen を使用して、秘密鍵をそれ。さまざまなオプションを提供します。対応する公開鍵をエクスポートします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top