我换了另一台 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 密钥环中,而不是存储在中间文件中(观察--homedir
GnuPG 调用中缺少的参数后管道):
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
答案3
对@jens-erat 的回答做一点补充:
导出到文件:
gpg --output private_keys.backup --armor --export-secret-keys
SSH 导入
gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import
參考文獻:如何将 GPG 私钥和公钥导出到文件