如何解决 apt 密钥的出站 hkp 端口被阻塞的问题

如何解决 apt 密钥的出站 hkp 端口被阻塞的问题

我正在使用 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-package 的公钥(建议使用具有这些资源的资源,和/或搜索技巧。到目前为止,搜索密钥哈希似乎并不是那么有效。)
  2. 如何检索密钥(可以使用 gpg 或 add-apt-repository 自动完成吗?)
  3. 如何将密钥添加到 apt 的密钥环中

提前致谢。

答案1

即将推出的 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

保存,退出,然后一切就绪。

答案2

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

答案3

以下是我使用的一个解决方法:

我登录到了我们公司防火墙之外的自由世界的一台 Linux 服务器,然后执行以下操作:

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

然后在我的工作站上运行这个,并将上述命令(公钥)的输出粘贴到标准输入中,然后按 control-D:

sudo apt-key add -

然后我就可以sudo apt-get update顺利运行了。

我仍然认为一定有更好的方法,最好是我可以编写脚本的方法。

答案4

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

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

cat > <filename>

[PASTE]

[Ctrl-C]

然后

apt-key add <filename>

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

相关内容