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

eri*_*old 23 encryption gnupg pgp backup-strategies

我读过这篇文章很好地解释了如何在osx上设置pgp,但我打算使用生成的密钥来签署git提交,所以我想我需要将密钥传输到我的其他计算机.它是否正确?如果是这样,我该如何转移钥匙?

Nei*_*hew 58

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

scp -rp ~/.gnupg othermachine:
Run Code Online (Sandbox Code Playgroud)

但是,您需要先ssh工作.

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

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

复制整个密钥环既快速又简单,但有时您希望能够在机器之间移动单个密钥而不会覆盖整个密钥环并丢失已存在的密钥.有选择地复制单个键可以用gpg --export-secret-key和完成gpg --import.如果您具有对目标计算机的ssh访问权限,则可以使用管道执行此操作,而无需在任何位置存储中间密钥:

如果您在已经拥有密钥的计算机上:

gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import
Run Code Online (Sandbox Code Playgroud)

如果您在需要密钥的计算机上:

ssh othermachine gpg --export-secret-key SOMEKEYID | gpg --import
Run Code Online (Sandbox Code Playgroud)

如果gpg不在远程计算机上的某个默认位置(例如,它在/opt/local/binMac上),则必须将其完整路径提供给ssh,或将其符号链接到其中一个标准位置,例如/usr/local/bin.

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

  • 它们的私钥已使用您加密时提供的密码加密.再次加密并不会使它更安全. (3认同)
  • “例如,用USB闪存驱动器进行传输并不是一个好主意,因为即使删除了文件,您的私钥也将留在该驱动器上。” 好吧,如果您是如此偏执,您始终可以使用一些对称密码对密钥进行加密以进行传输。 (2认同)
  • @KindOfGuy,你的问题似乎是你无法通过“ssh”在远程端执行“gpg”。既然`bash`说找不到`gpg`,也许是`PATH`问题​​?当通过“ssh”执行单个命令时(而不是以交互方式登录),您的“.profile”不会被执行,因此如果“gpg”不在标准位置之一(例如在“/opt/local/bin”中) ` 在 Mac 上)将找不到它。您可以通过在远程计算机上提供“gpg”的完整路径来克服这个问题。 (2认同)