如何将pgp私钥和公钥传输到另一台计算机?

时间:2010-07-04 11:45:21

标签: encryption gnupg pgp

我读了this article which explained very well how to setup pgp on osx,但我打算使用生成的密钥来签署git提交,所以我想我需要将密钥传输到另一台计算机。它是否正确?如果是这样,我该如何转移钥匙?

2 个答案:

答案 0 :(得分:53)

是的,您需要转移钥匙。 Mac和Linux的工作方式相同,将密钥存储在~/.gnupg中。传输文件最安全的方法是使用scp(ssh的一部分):

scp -rp ~/.gnupg othermachine:

但是,您需要先ssh工作。

使用USB闪存驱动器传输它们并不是一个好主意,因为即使在删除文件后,您的私钥也会留在该驱动器上。虽然它受到密码短语的保护,但是如果有人拿到密钥文件的副本,他们就可以在他们的失败中对其进行长时间的暴力攻击。

我不知道Windows上目录的位置。 gpg文档会说,内容几乎肯定是一样的。

复制整个密钥环既快速又简单,但有时您希望能够在计算机之间移动单个密钥而不会覆盖整个密钥环并丢失已存在的密钥。有选择地复制单个密钥可以使用gpg --export-secret-keygpg --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的完整路径或符号链接进入其中一个标准位置,例如/usr/local/bin

请注意,传输的数据仍受密码短语保护,密钥在目的地的密码短语与源密码短语相同。如果要在每个位置使用不同的密码短语,则需要更改目标位置的密码短语,或者在导出密码短语之前在源位置临时更改密码短语。我需要与同事分享一个秘密密钥,以便让他能够更新我们管理的Debian软件包repo,但我不想与他分享我的密码。所以我把密码更改为临时的,给他发送了导出的密钥(通过gpg加密的电子邮件!),口头告诉他临时密码短语,并要求他在导入密钥后立即设置新的密码短语。然后我将密钥副本上的密码更改回原来的密码。

答案 1 :(得分:-4)

这取决于PGP软件。您需要做的就是找到您的密钥环文件的物理位置,并将这些文件复制到新计算机上。 或者,从PGP软件导出密钥,然后在另一侧导入密钥。