在 Debian 8 下,我创建了(大概是使用 gpg 1 或 2.0)并将我的密钥 secring.gpg 发布到密钥服务器,该文件仍然位于 ~/.gnupg/ 目录下。但现在有了 gpg 2.1:
gpg --list-secret-keys
没有输出并尝试签署某些内容
gpg -s tmp.txt
失败与
gpg: no default secret key: secret key not available
gpg: signing failed: secret key not available
我是否以某种方式搞砸了从 Debian 8 到 9 的升级?我应该在升级之前导出密钥吗?如何将“旧”密钥导入到“新”gpg 中?
2018-03-01 更新:
问题很简单 - 不知何故,有时 - 我的 secring.gpg 缩小到大小 0! :-/ 在尝试导入时通过 Stephen Kitt 的解决方案发现了它
gpg --import-secret-keys secring.gpg
我收到一条消息,指出我的文件不包含有效数据。
答案1
GnuPG 2.1 不再使用~/.gnupg/secring.gpg
;相反,它在代理的帮助下使用 ~/.gnupg/private-keys-v1.d` 中的单独文件。在某些时候应该有自动迁移,但是在许多情况下会丢失一些信息(包括使用 GnuPG 添加私钥的情况1后2.1 迁移)。
要解决此问题,您应该导入您的密钥环:
gpg --import ~/.gnupg/secring.gpg
您将在以下位置找到更多有用的信息这个方便的 GnuPG 2.1 迁移指南,并在发行说明。
(我认为还值得一提的是,您的秘密密钥环永远不应该导出到公共服务器,并且 GnuPG 本身会尝试阻止您这样做;因此您不能依赖外部信息源作为您的秘密密钥的备份.)