如何导入公钥?

当我运行更新时,出现以下错误。
GPG error: http://cran.wustl.edu maverick/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 51716619E084DAB9

因此,我运行了以下代码并得到了以下错误信息:
$ gpg --keyserver subkeys.pgp.net --recv 51716619E084DAB9
gpg: requesting key E084DAB9 from hkp server subkeys.pgp.net
gpg: key E084DAB9: "Michael Rutter <marutter@gmail.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

如何设置一个有效的公钥或者我应该怎么解决这个问题?
3个回答

1)你可以试试这个:
gpg --keyserver keyserver.ubuntu.com --recv E084DAB9  

然后:

 gpg --export --armor E084DAB9 | sudo apt-key add - && sudo apt-get update  

2)如果“1”不起作用(你并不孤单),那么你可以使用这个方法:
“有些人报告说使用[第一种方法]时遇到了困难。问题通常与防火墙阻止端口11371有关。另一种方法是在http://keyserver.ubuntu.com:11371/上搜索密钥,并将密钥复制到一个纯文本文件中,比如key.txt。然后,使用apt-key命令导入密钥。”
sudo apt-key add key.txt  

"

此处所解释。

为了方便处理这个特定情况:

搜索Michael Rutter带领我们到:

公钥服务器 -- 获取``0x51716619e084dab9 ''
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: SKS 1.0.10
mQENBEy9tcUBCACnWQfqdrcz7tQL/iCeWDYSYPwXpPMUMLE721HfFH7d8ErunPKPIwq1v4Cr NmMjcainofbu/BfuZESSK1hBAItOk/5VTkzCJlzkrHY9g5v+XlBMPDQC9u4AE/myw3p52+0N XsnBz+a35mxJKMl+9v9ztvueA6EmLr2xaLf/nx4XwXUMSi1Lp8i8XpAOz/Xg1fspPMRhuDAG YDnOh4uH1jADGoqYaPMty0yVEmzx74qvdIOvfgj16A/9LYXk67td6/JQ5LFCZmFsbahAsqi9 inNgBZmnfXO4m4lhzeqNjJAgaw7Fz2zqUmvpEheKKClgTQMWWNI9Rx1L8IKnJkuKnpzHABEB AAG0I01pY2hhZWwgUnV0dGVyIDxtYXJ1dHRlckBnbWFpbC5jb20+iQE+BBMBAgAoBQJMvbXF AhsjBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBRcWYZ4ITauTy9B/4hmPQ7 CSqw5OS5t8U5y38BlqHflqFev3llX68sDtzYfxQuQVS3fxOBoGmFQ/LSfXQYhDG6BZa4nDuD ZEgb81Mvj0DJDl4lmyMdBoIvXhvdEPDd/rrOG+1t2+S429W9NIObKaZCs9abv2fnIhrtyAWx c/iNR5rJmNXozvJVGAgAeNhBSrvZqFaPJ//BklbJhfVgNwt4GgtFl1vaU7LMaMrOWA9Hyd8d WAGuIhbYXOOFj1WZ/OhUlYXnsIe8XzaJ1y6LyVkCLhaJ+MVtGwTXrFXRhBLQlhCYBfO25i/P GUWSvRhI8n/r+RMNOuy1HlFbexRYrtPXOLbiO8AlFuIsX9nRuQENBEy9tcUBCADYcCgQCCF1 WUSn7c/VXNvgmXzvv3lVX9WkV4QdpcJXitXglXdTZwVxGv3AxDuaLEwxW7rbqKRPzWNjj4xT Hxt2YtUjE+mLV58AFaQQU3aldYG8JPr2eohMNZqp2BG2odczw5eaO5l5ETjC1nHUjDUm8us3 TV3AXOajAjguGvpG3DKnx/gmudrMBVSAEE64kefyBmSR683zkXhw+NgbTID9XW1OSqE+fLQf 0ZzQEojMdfYIeV8Q5sMAmU3J9AdlpyDrZaYRmiphgw8PZTMahhz/o6Bz7p6VqA4Ncmr225nn tIsjUUz0iK6TsaOi9KrF23Rw+IDUJeYkdVbwGqavgJG1ABEBAAGJASUEGAECAA8FAky9tcUC GwwFCQlmAYAACgkQUXFmGeCE2rlB9Qf+JKMUzM0KVdTFWocGP+v4xTJsnKjYfjPjOkFYAdxh jkiIq7h7ws0s+UKqmzSG4vX5Qz46GZcB7x0hVrN0gqCcfpruPZOj
I) 将此复制到一个txt文件中:
gedit ~/Michael.txt  

II) 运行这个
sudo apt-key add ~/Michael.txt && rm ~/Michel.txt  

此外,EvilPhoenix还有一个“可以安装的脚本,可以让你以更简单的一行命令执行这里描述的功能,它是他启动的一个Launchpad项目的一部分,其PPA位于这里
它是用Bash编写的,但这已经足够满足要求了。
它与所有版本的Ubuntu Lucid及更高版本兼容。

与第一个命令相同的错误信息。第二个命令似乎读取了很多软件包列表。 - ATMathew
这是因为第二个命令中包含了 sudo apt-get update。那个第二个命令的前两部分是最重要的:gpg --export --armor E084DAB9 | sudo apt-key add - 。这个命令实际上是将公钥与apt一起使用的关键命令。 - Thomas Ward
我有一个脚本可以安装,它可以让你用更简单的一行命令执行这里描述的功能。这是我开始的一个Launchpad项目的一部分,它的PPA位于这里:https://launchpad.net/~addgpg-apt-developers/+archive/ppa。它是用Bash编写的,但这已经足够了。它应该以超级用户身份运行,但它与所有版本的Ubuntu Lucid及更高版本兼容(我仍在测试旧版本)。 - Thomas Ward
1当然,我的剧本已经得到了认可,你可以传播它。只要你给予我应得的荣誉(你已经做到了);) - Thomas Ward
大家好,我尝试了建议的解决方案1,但仍然遇到相同的错误。另外,当我尝试了第2部分时,我将http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x51716619E084DAB9中的内容复制到了我的主目录下的一个nano文本文件中,并运行了命令sudo apt-key add ~/Michael.txt。但是我收到了以下错误信息:gpg: no valid OpenPGP data found. - shoestringfries
是的,但现在有一个新的过程,你甚至不能使用apt-key add,而必须使用gpg代替。但是当前的文档没有提到如何解析gpg命令以便从纯文本密钥或未加密密钥在本地文件系统中工作。 - NeilG

sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com 51716619E084DAB9

要添加apt-keys,您必须使用:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E084DAB9

这是当我的公司防火墙阻止了默认端口11371时添加密钥的最简单方法。谢谢! - Nathan S. Watson-Haigh