我已经重新安装了操作系统(Ubuntu 16.04),并具有一个旧的.gnupg目录,其中包含:
gpg-agent.conf
gpg-agent-info-<hostname>
gpg.conf
private-keys-v1.d
pubring.gpg
secring.gpg
S.gpg-agent
trustdb.gpg
我想将旧的公钥和私钥导入新的gnupg中。(我并没有简单地将.gnupg目录复制到新安装中,因为我知道新的gnupg2在数据库格式方面存在一些差异,这是新的EC加密选项的一部分。)
以下内容适用于公用密钥,但不适用于秘密密钥:
gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import
后者回应:
gpg: can't open `~/.gnupg/secring.gpg' <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
请注意,它无法打开我的新秘密戒指。尝试导出到文件时会出现相同的错误:
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc
gpg: can't open `~/.gnupg/secring.gpg' <== New Secret Keyring
gpg: WARNING: nothing exported
由于我的秘密密钥已剥离了主密钥的私有部分,因此我也尝试了相同的操作--export-secret-subkeys
,但响应是相同的。将我的密钥ID(电子邮件地址)放在导出之后也无法正常工作。另一方面,我可以列出这些键:
gpg --list-keys --keyring=~/.gnupg.old/secring.gpg
gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id "Me <Me@home.com>" ....
node 0x1e99dd0 00/00 type=signature class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature class=18 keyid=XXXXXXXX ts=138363647
(我假设“密钥丢失”是指剥离的密钥主密钥。)有人可以指导我如何解决此问题吗?
在@Jens(如下)的帮助下,可以进行以下工作:
gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import
--no-default-keyring
和--secret-keyring
之前--list-secret-keys
会产生可识别的输出。所以,让我看看我现在所拥有的。