如何解决apt键被阻止的出站hkp端口问题


35

我正在使用Ubuntu 9.10,并且需要添加一些apt存储库。不幸的是,我在运行时收到这样的消息sudo apt-get update

W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A9BF3BB4E5E17B5
W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1DABDBB4CEC06767

因此,我需要为这些存储库安装密钥。在9.10下,我们现在可以选择执行以下操作:

sudo add-apt-repository ppa:nvidia-vdpau/ppa

有关详细信息,请参见此Ubuntu帮助文章

很好,除了我在防火墙后面的工作站上运行此防火墙之外,该防火墙阻止出站连接到几乎所有端口,但运行Windows和IE的秘书所需的端口除外。

此处涉及的端口是hkp服务端口11371。

似乎有些方法可以手动下载密钥并将其安装在apt的密钥环上。甚至可能有一种使用add-apt-repository或wget或其他方式从备用服务器下载密钥的方法,从而使其在端口80上可用。

但是,我还没有找到一套简洁的步骤。我正在寻找的是:

  1. 如何找到适用于apt程序包的公共密钥(具有这些资源的资源的建议和/或搜索提示。到目前为止,搜索密钥哈希似乎并不那么有效。)
  2. 如何检索密钥(可以使用gpg或add-apt-repository自动完成吗?)
  3. 如何在apt的钥匙圈中添加钥匙

提前致谢。

Answers:


38

这已在即将发布的Ubuntu Natty版本中修复:https//launchpad.net/ubuntu/natty/+source/software-properties/0.78.1

使用旧版本的用户需要编辑ppa.py:

sudo gedit /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py

它说:

keyserver.ubuntu.com

改成:

hkp://keyserver.ubuntu.com:80

保存,退出,那么希望您一切顺利。


1
很棒-解决了我的问题!
Fedearne 2011年

13
在10.10上,我可以直接调用sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys KEY_HASH
l0b0

hkp://keyserver.ubuntu.com:80也适用于10.04。
bd808

1
+1使用--keyserver hkp://keyserver.ubuntu.com:80
rogeriolino 2015年

19
sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://proxy:port --recv-keys KEYID

13

这是我使用的一种解决方法:

我登录到超出公司防火墙之外的自由环境中的linux服务器,并执行以下操作:

gpg --keyserver keyserver.ubuntu.com --recv 1DABDBB4CEC06767 && gpg --export --armor 1DABDBB4CEC06767

然后在我的工作站上,运行此命令,并将上述命令(公共密钥)的输出粘贴到stdin中,然后粘贴control-D:

sudo apt-key add -

这样我就可以sudo apt-get update毫无问题地奔跑了。

我仍然认为必须有更好的方法,理想情况下我可以编写脚本。


“我登录到自由世界中的一台Linux服务器上”如果hkp被阻止,则不太可能执行此操作。
gertvdijk

^可能假设您生活在压制性政权中,而不是拜占庭的IT部门。当我在VPN上时,我可以在任意位置使用SSH,但没有DNS数据包(显然也没有HKP)。这正是我所需要的。
金顿

8

我在这里有另一种解决方法,如果您在网络之外找不到另一台Linux服务器作为代理,这可能会很方便。只需将电子邮件发送至“ pgp-public-keys@pgp.mit.edu”,例如“ get 0x1DABDBB4CEC06767”。但是您可能仍然无法编写一个简单的脚本来实现此目的。


5

您可以访问密钥服务器的网站,例如http://wwwkeys.eu.pgp.net/ 搜索密钥签名(您需要在十六进制签名上添加0x),即0x1DABDBB4CEC06767。

单击您希望获得的链接并将文本粘贴到计算机上的文件中,即

cat > <filename>

[PASTE]

[Ctrl-C]

然后

apt-key add <filename>

这对我来说很好。看来我的工作代理阻止了许多“非标准”端口。


这是对我有用的唯一方法。我的代理严重阻塞了hkp协议,即使我使用端口80,gpg仍会超时与服务器联系。这样,我终于能够添加密钥。
亚历山大·阿梅尔金

4

我发现通过端口80(始终对www流量开放)执行的单个命令中,这样做的巧妙方法。

http://gurrier.wordpress.com/2010/10/02/downlolading-repo-keys-from-behind-a-corporate-firewall/


2
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys ...
vorburger 2014年

1
您好,欢迎来到超级用户。回答问题时,请在回复中使用解决方案来回答问题。无法保证您所引用的站点将保持该站点的正常运行,如果该站点出现故障,那么您的答案将毫无价值。
Mogget 2015年

2

一个简单的解决方案是:

sudo add-apt-repository --keyserver hkps://keyserver.ubuntu.com:443 some_ppa

防火墙不会阻止安全的https(传出443)。


1

我只是使用ssh将端口转发到外部主机,然后运行apt-add-repo命令。

ssh -fqTnN -D 11371 <user@host>

-1

我对gpg也有同样的问题。通过将端口添加到服务器名称来解决该问题,方法是编辑~/.gnupg/gpg.conf文件。但是,我仍然要让我们的系统管理员打开出站端口11371,因此我不必为此担心。


端口?在防火墙中如何在配置中指定端口(11371)?
0xC0000022L
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.