ベストアンサー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 で接続したリモート マシンにインポートする場合です。