ไม่สามารถเพิ่มคีย์ gpg ด้วย apt-key หลังพร็อกซี


34

การเพิ่มคีย์ gpg ผ่านapt-keyล้มเหลวอย่างเป็นระบบเนื่องจากฉันเปลี่ยนมาใช้ Ubuntu 17.04 (ฉันสงสัยว่ามันเกี่ยวข้องกันโดยตรง) ตัวอย่างด้วยคีย์ repo ของ 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://คำนำหน้า


บริบท: ฉันใช้CNTLMเพื่อจัดการกับพร็อกซีขององค์กรในพื้นที่ ตัวแปร Env ถูกตั้งค่า (ใน/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ตัวเลือก (สงวน env)
  • ทำงานapt-key advด้วย--keyserver-options http-proxy=http://localhost:3128/ตัวเลือก ( แหล่งที่มา )
  • วิ่ง$ gpg --list-keysด้วยเหตุผลบางอย่าง ( แหล่งที่มา )
  • ใช้ keyserver อื่น ( --keyserver pgp.mit.edu)
  • ลบhkp://ส่วน ( --keyserver keyserver.ubuntu.com:80)

สิ่งที่แปลกก็คือว่าฉันไม่เคยเห็นใด ๆ "cntlm" รายการในเมื่อทำงาน/var/log/syslogapt-key


จะเกิดอะไรขึ้นเมื่อคุณพยายามเข้าถึงhttp://keyserver.ubuntu.com/ในเบราว์เซอร์ของคุณ
dirkt

ฉันมีหน้าเว็บ (เหมือนกับที่แสดงในcurlผลลัพธ์ของด้านบน)
Anto

คำตอบ:


50

คุณมักจะมีพร็อกซีสำหรับ 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 <operations@spotify.com>
sig  sig3  D2C19886 2015-05-29 __________ 2017-11-22 [selfsig]
sig  sig   94558F59 2015-06-02 __________ __________ Spotify Public Repository Signing Key <operations@spotify.com>

เราเห็นว่านี่เป็นรายการที่เราสนใจ

ดังนั้นเราจึงคลิก 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

@ มันไม่ทำงานหรือไม่
Rui F Ribeiro

1
สวัสดี Rui จริง ๆ แล้ววิธี "คู่มือ" นี้ใช้งานได้และนั่นเป็นวิธีที่ฉัน "ชั่วคราว" แก้ไขในระหว่างนี้ เห็นได้ชัดว่าวิธีแก้ปัญหาชั่วคราวนี้จะไม่หยุดชั่วคราว :( แต่ต้องขอบคุณมากอยู่ดี
Anto

4

นี่คือทางออกที่ใช้ http ผ่าน curl แทนที่จะพยายามใช้ apt-key หรือ gpg proxy:

curl -sSL \
'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886' \
| sudo apt-key add -

ควรใช้วิธีนี้แทนการใช้apt-keyบรรทัดคำสั่งหรือการตั้งค่าตัวแปรสภาพแวดล้อม http_proxy หรือ https_proxy (ซึ่งถูกปิดใช้งานในเวอร์ชันล่าสุดapt-key)


-1

คุณสามารถระบุ keyserver เป็นพารามิเตอร์สำหรับ add-apt-repository โดย:

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

พอร์ตขาออก 443 จะไม่ถูกบล็อกโดยไฟร์วอลล์องค์กร


ทำไม? มันถูกปิดกั้นในทุกเครือข่ายของฉันโดยค่าเริ่มต้น
cprn

คำตอบนี้ใช้งานไม่ได้ความท้าทายของคำถามคือการเข้าถึงไฟร์วอลล์ส่วนกลาง
Rui F Ribeiro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.