我读过这篇文章很好地解释了如何在osx上设置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
不在远程计算机上的某个默认位置(例如,它在/opt/local/bin
Mac上),则必须将其完整路径提供给ssh,或将其符号链接到其中一个标准位置,例如/usr/local/bin
.
请注意,传输的数据仍受密码短语保护,密钥在目的地的密码短语与源密码短语相同.如果要在每个位置使用不同的密码短语,则需要更改目标位置的密码短语,或者在导出密码短语之前在源位置临时更改密码短语.我需要与同事分享一个秘密密钥,以便让他能够更新我们管理的Debian软件包repo,但我不想与他分享我的密码.所以我把密码更改为临时的,给他发送了导出的密钥(通过gpg加密的电子邮件!),口头告诉他临时密码短语,并要求他在导入密钥后立即设置新的密码短语.然后我将密钥副本上的密码更改回原来的密码.