sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10命令返回错误


30

我正在尝试在Ubuntu 12上安装Mongodb,但是当我运行此命令时:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
这返回以下错误:

找不到keyserver.ubuntu.com主机
gpgkeys:HTTP提取错误7:无法连接:找不到这样的文件或目录
gpg:找不到有效的openPGP数据
gpg:进程总数::0

我关闭了Iptables上的防火墙,但是它不起作用。有什么主意吗


您的系统可以将keyserver.ubuntu.com解析为IP地址吗?即,什么是输出dig keyserver.ubuntu.com
Xyon 2013年

Answers:


35

查找密钥服务器实际上可能不是问题,这就是错误提示。apt-key命令调用gpg,后者又尝试访问密钥服务器。显然,gpg中存在一个错误,如果密钥服务器没有您所请求的密钥,则gpg会将其错误解释为“找不到主机”。

无响应的密钥服务器很可能会做同样的事情,而且我已经看到密钥服务器被阻止的环境(企业防火墙规则),因此,如果有上游防火墙您无权访问,这可能是您的根本原因至。

仅供参考,密钥在那里,密钥服务器当前正在为我响应:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.rh1myoBdSE --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 7F0CEB10
gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com
gpg: key 7F0CEB10: "Richard Kreuter <richard@10gen.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

可能是端口问题(这是我最后一次遇到公司防火墙问题),因此请尝试在标准HTTP端口(80)上执行此操作,看看是否可以解决问题:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

4
“改为在标准HTTP端口(80)上执行此操作”非常棘手!tks
Bill.Zhuang

1
警告:如果没有SSL,您可能会受到MitM攻击,该攻击会为您提供一个密钥,该密钥的指纹的最后8个字符相同(示例攻击密钥)。这样的密钥甚至可能不会公开共享,因此您永远不会知道自己被伪造了。为了防止来自公共共享密钥的此类攻击,Debian的密钥服务器制定了一项政策,规定“只有Debian密钥环中的密钥……将由该服务器返回”
Adam Katz

21

我遇到了同样的问题,因为我的机器位于公司代理后面。添加gpg --keyserver-option http-proxy了把戏。看起来像:

sudo apt-key adv --keyserver-options http-proxy=<myProxy> --keyserver keyserver.ubuntu.com --recv 7F0CEB10

1
谢谢!很好,我没有停止在顶部阅读...
Moraru Lilian

20

如果您使用代理服务器(例如公司的代理服务器),那么唯一的方法可能是手动输入,这很简单。跑:

sudo apt-get update

并获取pub_key的ID。然后转到http://keyserver.ubuntu.com/并以十六进制形式搜索密钥,例如,如果密钥为7936A783B,则搜索0x7936A783B。单击pup链接,然后复制密钥内容并将其保存到txt文件中。转到终端并导航到文件并运行:

sudo apt-key add key.txt

如果可行,您将获得简单的OK反馈。添加所有密钥后,可以运行:

sudo apt-get update

就在那里!


3
这很整齐;您也可以按以下方式使用获取的逐字网址apt-keyapt-key adv --fetch-keys http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xD6ACA1C817B18ABC
sxc731

2
@ sxc731 – apt-key手册页中说:“请注意,没有执行任何检查,因此如果不加注意地使用,很容易完全破坏apt-secure(8)基础结构。”这意味着您真的不想在没有保护的情况下进行操作。 SSL。更改为--fetch-keys https://…,您应该是相当安全的。
亚当·卡兹

@AdamKatz很好,谢谢。不幸的是,我无法编辑我的评论以应用您的建议,但无论如何都赞成……
sxc731

--fetch-keys选项对我失败,出现以下错误:https://keyserver.ubuntu.com/pks/lookup?op=get gpgkeys: protocol https'不支持gpg:没有用于密钥服务器方案的处理程序https' gpg: WARNING: unable to fetch URI https://keyserver.ubuntu.com/pks/lookup?op=get: keyserver error
miguelmorin

谢谢,正是我想要的。
Miguel Ortiz

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.