导出到文件:

导出到文件:

我换了另一台 Macbook。由于 SSD 价格昂贵,磁盘大小又非常小,而且我想从此安装开始,因此我无法传输用户文件夹。我已将旧磁盘连接到外部机箱中,但我忘记导出两个私钥。我想从外部磁盘或 Time Machine 中恢复它们。

我在哪里可以找到 GPG Tools 私钥,以便我可以导出它们,或者复制整个 GPG Tools 文件夹?

答案1

默认情况下,GnuPG 密钥环存储在(隐藏)文件夹中~/.gnupg;换句话说,就是.gnupg您的主目录中的文件夹。您只需将整个文件夹复制到新机器即可。如果 GnuPG 之后无法正常工作或显示一些指示权限损坏的错误消息,请确保之后通过在终端应用程序中运行以下命令来获取所有权(即使您的用户名相同,内部 ID 也可能不同)(它将查询您的用户密码):

sudo chown -R $USER:staff ~/.gnupg

或者,您可以使用以下方式导出您的密钥

gpg --export-secret-keys [key-id] >secret-keys.gpg

命令。由于您想从旧磁盘恢复密钥,请将其连接到计算机。要处理旧磁盘的 GnuPG 密钥环,请使用选项--homedir,这将导致类似

gpg --homedir /Volumes/[old-disks-name]/Users/[username]/.gnupg --list-secret-keys

列出可用的密钥,并

gpg --homedir /Volumes/[old-disks-name]/Users/[username]/.gnupg --export-secret-keys [key-id] > secret-keys.gpg

导出它们。您也可以直接将它们导入到新的 GnuPG 密钥环中,而不是存储在中间文件中(观察--homedirGnuPG 调用中缺少的参数管道):

gpg --homedir /Volumes/[old-disks-name]/Users/[username]/.gnupg --export-secret-keys [key-id] | gpg --import

2019 年更新/macOS Catalina:

时间机器备份可以挂载,但无法就地修改。这意味着 chown 将失败,并且您无法--homedir在不获取以下流的情况下使用该选项:

gpg: failed to create temporary file '/Volumes/<Backup Drive>/Backups.backupdb/<Compute Name>/Latest/Macintosh HD/Users/<name>/.gnupg/': Permission denied
gpg: can't connect to the agent: Permission denied

chown 将失败并显示如下消息流:

$ sudo chown -R user:staff .gnupg

chown: .gnupg/tofu.db: Operation not permitted
chown: .gnupg/trustdb.gpg: Operation not permitted
chown: .gnupg: Operation not permitted

从 Time Machine 备份中复制 .gnupg 文件夹,对其进行 chown,然后按上述方式查看/提取私钥:

$ mkdir ~/gpg_recovery
$ cp -r /Volumes/<Backup Drive>/Backups.backupdb/<Compute Name>/Latest/Macintosh HD/Users/<name>/.gnupg ~/gpg_recovery/
$ cd ~/gpg_recovery/
$ sudo chown -R $USER:staff .gnupg
Password:
$ gpg --homedir ~/gpg_recovery/.gnupg --list-secret-keys

$ gpg --homedir ~/gpg_recovery/.gnupg --export-secret-keys | gpg --import
gpg: key xxxxxxxxxxxxxxxx: public key "xxxxxxxxxxxxxxxxxxxxxxx" imported
gpg: key xxxxxxxxxxxxxxxx: secret key imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1

答案2

视窗

在 Windows 系统上,您可以使用类似的软件Gpg4win。在这种情况下,您可以通过将以下文件复制到新计算机来迁移您的(私人)密钥:

  • 文件%AppData%\gnupg\pubring.kbx
  • 文件%AppData%\gnupg\trustdb.gpg
  • 整个文件夹%AppData%\gnupg\private-keys-v1.d

要列出当前已识别(已安装)的本地密钥,请使用gpg --list-secret-keys --keyid-format LONG。已通过以下方式使用 gpg (GnuPG) 2.3.4 (2021) 进行测试:Gpg4win4.0.0。

答案3

对@jens-erat 的回答做一点补充:

导出到文件:

gpg --output private_keys.backup --armor --export-secret-keys

SSH 导入

gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import

參考文獻:如何将 GPG 私钥和公钥导出到文件

相关内容