回答:
私にはもっとうまくいくように見える方法を見つけました:
ssh-keygen -y -f <private key file>
このコマンドは、指定された秘密鍵の公開鍵を出力するため、出力を各* .pubファイルと比較するだけです。
id_rsa.pub.blahhost
ファイルがあり、どれが単一のid_rsa
秘密キーに一致するかわからなかったので、古いWebサイトから移行できるようにパスワードなしのscpを設定しています。新しいキーペアを作成することはできません。私は自分の鍵をうまく設定していて、それを台無しにするつもりはありません。
次のコマンドを入力して、秘密鍵と公開鍵が$ 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 <(ssh-keygen -yf〜/ .ssh / id_rsa)<(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を使用して秘密鍵をロードするだけです。対応する公開鍵のエクスポートなど、さまざまなオプションを提供します。