無法在代理程式後面使用 apt-key 新增 gpg 金鑰

無法在代理程式後面使用 apt-key 新增 gpg 金鑰

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 不會被公司防火牆封鎖。

相關內容