Nie można dodać klucza gpg z kluczem apt za proxy

34

apt-keySystematyczne dodawanie klucza gpg nie powiodło się, odkąd przełączyłem się na Ubuntu 17.04 (wątpię jednak, że jest to bezpośrednio powiązane). Przykład z kluczem repozytorium 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

To samo, jeśli usunę hkp://prefiks.


Kontekst: Używam CNTLM do radzenia sobie z lokalnym korporacyjnym proxy. Zmienne env są ustawione (in /etc/environment):

$ env | grep 3128
https_proxy=http://localhost:3128
http_proxy=http://localhost:3128
ftp_proxy=http://localhost:3128

/etc/apt/apt.confjest skonfigurowany ( aptpolecenia działają poprawnie):

$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://localhost:3128";
Acquire::https::Proxy "http://localhost:3128";
Acquire::ftp::Proxy "http://localhost:3128";

Wreszcie określony serwer kluczy wydaje się dostępny:

$ 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>
  [...]

Co mogę zrobić ? Nie jestem nawet pewien, jak dalej to debugować ...


Rzeczy, które już próbowałem zrobić bez rezultatu:

  • uruchom sudoz -Eopcją (zachowaj env)
  • uruchom apt-key advz --keyserver-options http-proxy=http://localhost:3128/opcją ( źródło )
  • uruchomić $ gpg --list-keysz jakiegoś powodu ( źródło )
  • użyj innego keyserver ( --keyserver pgp.mit.edu)
  • usuń hkp://część ( --keyserver keyserver.ubuntu.com:80)

Dziwne jest to, że nigdy nie widzę żadnego wpisu „cntlm” /var/log/syslogpodczas działania apt-key.

Anto
źródło
Co się stanie, gdy spróbujesz uzyskać dostęp http://keyserver.ubuntu.com/w przeglądarce?
dirkt
Mam stronę internetową (taką samą jak ta pokazana w curlwynikach powyżej)
Anto

Odpowiedzi:

50

Zwykle masz proxy dla ftp, http i https; Widzę tam hkp: // jako URL; dlatego nie powinien być kierowany przez czysty serwer proxy HTTP, dlatego nie można nawiązać komunikacji.

Użyj tego zamiast:

sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://localhost:3128 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886

Jeśli chodzi o aktualizacje systemu, radziłbym na przykład użyć proxy APT apt-cacher-ng.

Innym sposobem na to jest wyszukiwanie w publicznym interfejsie internetowym za pomocą przeglądarki, na przykład na stacji roboczej, w poszukiwaniu klucza, który chcesz na https://keyserver.ubuntu.com

Otwórz stronę, a otrzymasz formularz. W tym przypadku użyłem „Wyszukiwanego ciągu” „Spotify”; następnie wybierz „Szukaj”; wyświetli listę kilku kluczy.

Wyszukiwanie podpisu / odcisku palca wspomnianego na stronie wyników:

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]>

Widzimy, że ten wpis nas interesuje.

Klikamy więc D2C19886 i wyświetlamy stronę z kluczem na 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-----

Przecinasz między wierszem rozpoczynającym się od „----- BEGIN” a wierszem kończącym się na „----- END”, w tym tymi liniami, i wklejasz do pliku, powiedz spotify.pgpna docelowym serwerze, który chcesz zaimportować klawisz. (nie wycinaj tego stąd, ponieważ dodałem 4 spacje przed każdą linią podczas formatowania)

Na koniec, aby zaimportować klucz na serwer, robisz:

$sudo apt-key add spotify.pgp
OK
Rui F. Ribeiro
źródło
@ Czy to nie zadziałało?
Rui F Ribeiro
1
Cześć Rui, rzeczywiście ta „ręczna” metoda działa i właśnie w ten sposób „tymczasowo” ją rozwiązałem. Najwyraźniej to tymczasowe rozwiązanie nie pozostanie tymczasowe :( Ale i tak wielkie dzięki.
Anto
4

Oto rozwiązanie, które używa http przez curl zamiast próbować proxy apt-key lub gpg:

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

Tej metody należy używać zamiast apt-keyustawień zmiennych środowiskowych wiersza polecenia lub http_proxy lub https_proxy (które są wyłączone w najnowszych wersjach apt-key).

Dan Anderson
źródło
-1

możesz podać serwer kluczy jako parametr repozytorium add-apt przez:

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

Port wychodzący 443 nie byłby blokowany przez korporacyjną zaporę ogniową.

Thien Pham
źródło
Czemu? Domyślnie jest zablokowany we wszystkich moich sieciach.
cprn
Ta odpowiedź nie zadziała, wyzwanie polega na tym, że dostęp jest centralnie zaporowy.
Rui F Ribeiro,