私は この記事 ( アーカイブされたリンク )を読んで、macOSでPGPをセットアップする方法を非常によく説明しました。しかし、Gitコミットの署名用に生成されたキーを使用する予定なので、キーを他のコンピューターに転送する必要があると思います。これは正しいです?そして、もしそうなら、それらのキーをデバイス間で転送する最良の方法は何ですか?
はい、キーを転送する必要があります。 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
がリモートマシンのデフォルトの場所にない場合(Macの/opt/local/bin
にある場合など)は、sshへのフルパスを指定するか、1つにシンボリックリンクする必要があります/usr/local/bin
などの標準的な場所の。
転送されたデータは引き続きパスフレーズによって保護されており、送信元と同じパスフレーズが宛先でも鍵に使用されることに注意してください。場所ごとに異なるパスフレーズを使用する場合は、エクスポート先でパスフレーズを変更するか、エクスポートする前にソースで一時的に変更する必要があります。私たちが管理しているDebianパッケージリポジトリを更新できるようにするために、同僚と秘密鍵を共有する必要がありましたが、パスフレーズを彼と共有したくありませんでした。そこで、パスフレーズを一時的なものに変更し、エクスポートしたキーを(gpgで暗号化した電子メールで)送信し、一時的なパスフレーズを口頭で伝え、キーをインポートした直後に新しいパスフレーズを設定するように依頼しました。次に、キーのコピーのパスフレーズを元のパスフレーズに戻しました。