我最近丢失了我的 .gnupg 文件夹。幸运的是,我备份了我的私钥,但是我想重新导入已签名我的密钥的公钥。我如何轻松地导入所有这些密钥 - 最好是一次性导入?
pub 2048R/52AE9CEE 2012-01-20 [expires: 2015-02-09]
uid Thom Wiggers <antispamsnip>
sig 3 52AE9CEE 2012-01-20 Thom Wiggers <antispamsnip>
sig 2EF8C903 2012-12-04 [User ID not found]
sig 1 7E8162D1 2012-12-01 [User ID not found]
sig 2 EC362321 2012-11-29 [User ID not found]
答案1
gpg --list-sigs | grep 'ID not found' | perl -nwe '/([0-9A-F]{8})/ && print "$1\n"' | xargs gpg --recv-keys
这应该能满足您的要求。它会查找每个缺失的用户 ID,然后提取密钥 ID 并构建要从密钥服务器获取的公钥列表。
答案2
要将公钥导入到你的密钥环中,你需要有该公钥。由于您丢失了.gnupg
文件夹,因此您还丢失了要重新导入的公钥的本地副本,因此您必须在“其他地方”检索它们。其他人的公钥通常可以在他们的网页上、他们发送给您的签名电子邮件的附件或公钥服务器。
如果您需要的公钥确实在密钥服务器上,则使用gpg --recv-keys
来检索它们并将其导入到您的密钥环中。例如:
$ gpg --recv-keys 2EF8C903
gpg: requesting key 2EF8C903 from hkp server pool.sks-keyservers.net
gpg: key 2EF8C903: public key "Luuk Scholten <antispamsnip>" imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 7 signed: 4 trust: 0-, 0q, 0n, 0m, 0f, 7u
gpg: depth: 1 valid: 4 signed: 0 trust: 3-, 0q, 0n, 0m, 1f, 0u
gpg: next trustdb check due at 2013-09-23
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
如您所见,此命令恰好找到了与指定 ID 匹配的一个密钥,并将其导入到我的密钥环中。
(从您的密钥环中导入其他人的公钥不存在安全问题。输入并不意味着信任。