PGP 秘密鍵を別のコンピュータに転送するにはどうすればいいですか? [closed] 質問する

PGP 秘密鍵を別のコンピュータに転送するにはどうすればいいですか? [closed] 質問する

私は読むこの記事アーカイブリンク) では、macOS で PGP を設定する方法が詳しく説明されています。しかし、生成されたキーを Git コミットの署名に使用することを計画しているので、キーを他のコンピューターに転送する必要があると考えています。これは正しいですか? また、正しい場合、デバイス間でキーを転送する最適な方法は何ですか?

ベストアンサー1

はい、キーを転送する必要があります。Mac と Linux は同じように動作し、キーは に保存されます~/.gnupg。ファイルを転送する最も安全な方法は、scp(ssh の一部) を使用することです。

scp -rp ~/.gnupg othermachine:

ただし、まずは作業を開始する必要がありますssh

たとえば、USB フラッシュ ドライブで転送するのは、ファイルを削除した後でも秘密鍵がそのドライブに残るため、あまり良いアイデアではありません。パスフレーズで保護されているとはいえ、誰かがキー ファイルのコピーを入手した場合、長時間にわたるブルート フォース攻撃を自由に実行できます。

Windows 上のディレクトリの場所についてはわかりません。gpg のドキュメントに記載されており、内容はほぼ間違いなく同じです。

キーリング全体をコピーするのは簡単で手っ取り早いですが、キーリング全体を上書きして既存のキーを失うことなく、個々のキーをマシン間で移動できるようにしたい場合もあります。個々のキーを選択的にコピーするには、gpg --export-secret-keyと を使用しますgpg --import。宛先マシンに SSH アクセスできる場合は、パイプを使用してこれを行うことができ、中間キーをどこかに保存する必要はありません。

すでにキーを持っているマシンを使用している場合:

gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import

キーが必要なマシンを使用している場合:

ssh othermachine gpg --export-secret-key SOMEKEYID | gpg --import

gpgがリモート マシン上のデフォルトの場所の 1 つにない場合(たとえば/opt/local/bin、Mac の場合)、ssh にフル パスを指定するか、などの標準の場所の 1 つにシンボリック リンクを作成する必要があります/usr/local/bin

転送されたデータはパスフレーズによって保護されたままであり、キーのパスフレーズは転送先でも転送元と同じになることに注意してください。それぞれの場所で異なるパスフレーズを使用する場合は、転送先でパスフレーズを変更するか、エクスポートする前に転送元で一時的に変更する必要があります。同僚と秘密鍵を共有して、私たちが管理している Debian パッケージ リポジトリを更新できるようにしたかったのですが、パスフレーズを共有したくありませんでした。そこで、パスフレーズを一時的なものに変更し、エクスポートしたキーを (gpg で暗号化された電子メールで) 送信し、一時的なパスフレーズを口頭で伝え、キーをインポートしたらすぐに新しいパスフレーズを設定するように依頼しました。次に、キーのコピーのパスフレーズを元のものに戻しました。


2021-03-03 更新

GnuPG 2.0 では、リモート マシンからキーをエクスポートしていて、X11 接続転送がない場合、パスフレーズの入力に問題が発生する可能性があります。たとえば、gpg「'/dev/tty' を開けません」と表示されます。擬似端末割り当てを強制すると、ssh -tキーがパスフレーズ プロンプトや s などの端末アクティビティと混ざってしまいます\r。これを回避する方法の 1 つは、次のとおりです。

ssh othermachine gpg --passphrase-fd 0 --pinentry-mode loopback ...

次に、パスフレーズを入力して Enter キーを押します。プロンプトは表示されず、エコーも抑制されません (そのため、パスフレーズは端末に表示されます)。エコーがどうしても必要な場合は、 を使用して一時的にオフにし、 を使用してstty -echo再度オンにすることができますstty echo。これはすべて、次のように 1 つのコマンドにまとめることができます。

stty -echo; \
  ssh othermachine gpg --passphrase-fd 0 --pinentry-mode loopback \
    --export-secret-key SOMEKEYID | gpg --import; \
stty echo

ただし、これを行う必要があることはまれです。最も一般的なケースは、現在使用しているマシンからエクスポートし、SSH で接続したリモート マシンにインポートする場合です。

おすすめ記事