![无法在代理后面使用 apt-key 添加 gpg 密钥](https://linux22.com/image/110321/%E6%97%A0%E6%B3%95%E5%9C%A8%E4%BB%A3%E7%90%86%E5%90%8E%E9%9D%A2%E4%BD%BF%E7%94%A8%20apt-key%20%E6%B7%BB%E5%8A%A0%20gpg%20%E5%AF%86%E9%92%A5.png)
apt-key
自从我切换到 Ubuntu 17.04 以来,通过系统添加 gpg 密钥会失败(但我怀疑它是否直接相关)。示例为Spotify 的存储库密钥:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
Executing: /tmp/apt-key-gpghome.wRE6z9GBF8/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
gpg: keyserver receive failed: No keyserver available
如果我删除前缀也是一样hkp://
。
上下文:我使用碳纳米管应对当地企业代理。设置环境变量(在 中/etc/environment
):
$ env | grep 3128
https_proxy=http://localhost:3128
http_proxy=http://localhost:3128
ftp_proxy=http://localhost:3128
/etc/apt/apt.conf
已配置(apt
命令工作正常):
$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://localhost:3128";
Acquire::https::Proxy "http://localhost:3128";
Acquire::ftp::Proxy "http://localhost:3128";
最后,指定的密钥服务器似乎可以访问:
$ curl keyserver.ubuntu.com:80
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SKS OpenPGP Public Key Server</title>
</head>
<body>
[...]
我能做些什么 ?我什至不确定如何进一步调试它......
我已经尝试过但没有任何结果的事情:
sudo
使用-E
(保留环境)选项运行apt-key adv
使用选项运行--keyserver-options http-proxy=http://localhost:3128/
(来源)$ gpg --list-keys
由于某种原因运行(来源)- 使用另一个密钥服务器 (
--keyserver pgp.mit.edu
) - 去掉
hkp://
(--keyserver keyserver.ubuntu.com:80
)部分
奇怪的是,我在/var/log/syslog
运行时从未看到任何“cntlm”条目apt-key
。
答案1
您通常有 ftp、http 和 https 的代理;我看到 hkp:// 作为 URL;因此它不应该通过纯 http 代理进行定向,从而导致通信失败。
使用这个代替:
sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://localhost:3128 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886
至于系统更新,我建议使用 APT 代理,例如apt-cacher-ng
.
另一种方法是使用浏览器在公共网络界面中搜索,例如在您的工作站上搜索您想要的密钥https://keyserver.ubuntu.com
打开网站,你会得到一张表格。在本例中,我使用了“搜索字符串”“Spotify”;然后选择“搜索”;它会列出几个键。
搜索您在结果页面中提到的签名/指纹:
pub 4096R/D2C19886 2015-05-28
Fingerprint=BBEB DCB3 18AD 50EC 6865 0906 13B0 0F1F D2C1 9886
uid Spotify Public Repository Signing Key <[email protected]>
sig sig3 D2C19886 2015-05-29 __________ 2017-11-22 [selfsig]
sig sig 94558F59 2015-06-02 __________ __________ Spotify Public Repository Signing Key <[email protected]>
我们发现这是我们感兴趣的条目。
因此,我们单击 D2C19886 并出现一个页面,其密钥为https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x13B00F1FD2C19886。
Public Key Server -- Get "0x13b00f1fd2c19886 "
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.6
Comment: Hostname: keyserver.ubuntu.com
mQINBFVm7dMBEADGcdfhx/pjGtiVhsyXH4r8TrFgsGyHEsOWaYeU2JL1tEi+YI1qjpExb2Te
TReDTiGEFFMWgPTS0y5HQGm+2P3XGv0pShvgg9A6FWZmZmT+tymA2zvNrdpmKdhScZ52StPL
Fz9wsmXHG4DIKVuzgzuV4YxJ1i2wFtoVp8zT9ORu1BxLZ0IBwTvLRbaQGZ8DwXVAHak9cK91
Ujj6gJ1MJPohZLHH2BjrOjEl/I36jFUjK0AadznNzo08lLAi94qjtheJtuJD3IEOAlCkaknz
6vbEFpszLGlLD7GENMzJk46ObuJuvW5R2PkOU2U8jS0GaUD9Ou/SIdJ6vIdvjSs/ettc2wwd
nbSdadvjovIfvEBRsEVMpRG+42B+DZpJbS9pCb8sxTJtnUy1YViZmG0++FhPGGPGzQYhC/Mz
07lsx5PkC7Kka2FCNmhauxw5deO43Ck181oQVdbt/VxmChzchUJ6N6/uOV5JKm7B9UnDNyqU
Yv6goeLvFnT9ag+FCxiroTrq+dINr6d+XT/cI9WtSagfmhcekwhyfcCgYsFemAOckRifjEGF
MksQlnWkGwWNoKe91KBxjgaJaazSbZRk0dFPSSmfKWaxuTwkR74pbaueyijnQJgHAjfCyzQe
9miN9DitON5l6T2gVAN3Jn1QQmV7tt5GB7amcHf5/b0oYmmRPQARAQABtD5TcG90aWZ5IFB1
YmxpYyBSZXBvc2l0b3J5IFNpZ25pbmcgS2V5IDxvcGVyYXRpb25zQHNwb3RpZnkuY29tPokB
HAQQAQIABgUCVW3SWAAKCRAILM7flFWPWUk5B/wOqqD9/2Do9PyPucfUs/rrP4+M8iJLpv8U
+bX/qHryTTWfpk3YuKL4+c8saHySK4HLGyxd3mdo1XMF351KrxLQvWMSSPbIRV9cSqZROOVn
2ya+3xpWk6t1omLzxtBBMOC4B5qAfWhog7ioAmzQNY5NUz5mqXVP5WbgR/G+GOszzuQUgeu1
Xxxzir3JqWQ0g8mp3EtX7dB76zxkkuTYbeVDPOvtJPn/38d3oSLUI1QJnL8pjREHeE8fO5mW
ncJmyZNhkYd+rfnPk+W0ZkTr59QBIEOGMTmATtNh+x1mo5e2dW91Oj4jEWipMUouLGqbo/gJ
uHFMt8RWBmy+zFYUEPYHiQI+BBMBAgAoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUC
VWg3sAUJBK3QLQAKCRATsA8f0sGYhl6hEACJ1CrYjaflKKR2Znuh0g0gM89NAwO8AA4+SpkW
HagdGLo7OV/rGB3mlwD4mhaa8CbEnBT/za3jFnT19KsYQWiT21oOX/eo47ITbAspjDZTiXLi
nyAcOJn+q/EFkelROzbVaxZHi6SN5kCEd8KAew8h2jZf8wWqaYVyMPNSqotUhin6YjWsu57B
GixVThoMmxx3udsGAiYqt8buAANWbkUphrvtJuNCKkGym7psnS4Q5EnHPfvbYii9iAfBswX6
nZQlehva7aToN73elYL3opCArAxKAFx70bpGxb7T16KjKzkKS0a4iQ7xdbBGylb+AE/RhICa
+RM5tma2YnB3pZvFM/n0BNeYReCgvxkl1rqrB1KxmFHfGqjLkb2YAZ5RYnP3gEt+nbEWxL8F
O0Bhakn1RB3NqTC2oiQAUfh+66yUawUNkHRHlGAEzZAxvpfnf0hSJp734lyQZJs+zqXUAXa2
UmEZ6se62PgZRQIz5IbAVxSiGz4xIZs1yS36N2vZ34LFJa9o/HVk5OfpqZM0zjWwQIQN2b4O
BizL5r4h2Mi5BHUEyYMsDZn+txoJjPPYLolRlf31sqi5MJE+cbOAXSn8PC9k4i+hrbfqFzts
47+6xgCH3aXbhUkJh1CH/0/qEXfTPYTyayijm4rdvSBczzEORWGT5E38oV9h1eUqp4nVPg==
=/qip
-----END PGP PUBLIC KEY BLOCK-----
您在以“-----BEGIN”开头的行和以“-----END”结尾的行(包括这些行)之间进行剪切,然后粘贴到文件中,例如spotify.pgp
在要导入该文件的目标服务器上钥匙。 (不要从这里剪切它,因为我在格式化时在每行前添加了4个空格)
最后将密钥导入到服务器中:
$sudo apt-key add spotify.pgp
OK
答案2
这是一个通过curl使用http而不是尝试代理apt-key或gpg的解决方案:
curl -sSL \
'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886' \
| sudo apt-key add -
应使用此方法而不是apt-key
命令行或 http_proxy 或 https_proxy 环境变量设置(在最新版本的 中已禁用apt-key
)。
答案3
我之前添加过http://
,keyserver.ubuntu.com
它对我有用:
# apt-key adv --keyserver http://keyserver.ubuntu.com
答案4
您可以通过以下方式将密钥服务器指定为 add-apt-repository 的参数:
sudo add-apt-repository --keyserver hkps://keyserver.ubuntu.com:443 some_ppa
传出端口 443 不会被公司防火墙阻止。