sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 polecenie zwraca błąd

30

Próbuję zainstalować Mongodb na Ubuntu 12, ale kiedy uruchomię to polecenie: Zwrócił
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
błąd poniżej:


keyserver.ubuntu.com nie znaleziono hosta gpgkeys: błąd pobierania HTTP 7: nie można połączyć: nie ma takiego pliku lub katalogu
gpg: nie znaleziono prawidłowych danych openPGP
gpg: Łączna liczba procesów: 0

Wyłączyłem Firewall na Iptables, ale to nie działa. Czy jest jakiś pomysł?

nyamka
źródło
Czy twój system może rozpoznać keyserver.ubuntu.com jako adres IP? Tj., Co jest wynikiem dig keyserver.ubuntu.com?
Xyon

Odpowiedzi:

35

To może nie być problemem podczas wyszukiwania serwera kluczy, co sugeruje błąd. Polecenie apt-key wywołuje gpg, który z kolei próbuje uzyskać dostęp do serwera kluczy. Najwyraźniej w gpg występuje błąd, w wyniku którego jeśli serwer kluczy nie ma żądanego klucza, gpg błędnie interpretuje to jako „nie znaleziono hosta”.

Może się zdarzyć, że nieodpowiadający serwer kluczy zrobi to samo, i widziałem środowiska, w których serwery kluczy są zablokowane (reguły zapory korporacyjnej), więc może to być Twoja główna przyczyna, jeśli istnieje zapora ogniowa, do której nie masz dostępu do.

Tylko dla odniesienia, klucz jest tam i serwer kluczy obecnie odpowiada na mnie:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.rh1myoBdSE --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 7F0CEB10
gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com
gpg: key 7F0CEB10: "Richard Kreuter <[email protected]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

Być może przyczyną jest problem z portem (był to ostatni raz, gdy trafiłem na korporacyjną zaporę sieciową), więc spróbuj zrobić to na standardowym porcie HTTP (80), sprawdź, czy to rozwiązuje problem:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Adam C.
źródło
4
„robienie tego zamiast tego na standardowym porcie HTTP (80)” jest bardzo trudne! tks
Bill.Zhuang
1
Ostrzeżenie: bez SSL możesz zostać potencjalnie uderzony przez atak MitM , który podaje ci klucz, którego odcisk palca ma te same osiem ostatnich znaków ( np. Klucz ataku ). Taki klucz może nawet nie zostać udostępniony publicznie, więc nigdy nie będziesz wiedział, że zostałeś wykorzystany. Aby zapobiec takiemu atakowi z publicznie udostępnianych kluczy, serwer kluczy Debiana ma politykę, zgodnie z którą „tylko klucze w kluczach Debiana… zostaną zwrócone przez ten serwer”
Adam Katz
21

Napotkałem ten sam problem, ponieważ mój komputer stoi za korporacyjnym serwerem proxy. Dodanie gpg --keyserver-option http-proxywykonanej sztuczki. Wygląda jak:

sudo apt-key adv --keyserver-options http-proxy=<myProxy> --keyserver keyserver.ubuntu.com --recv 7F0CEB10
fgungnir
źródło
1
Dzięki! Dobrze, że nie przestałem czytać na górze ...
Moraru Lilian
20

Jeśli używasz proxy, na przykład proxy firmy, prawdopodobnie jedynym sposobem jest ręczne wprowadzenie tego, co jest dość proste. Biegać:

sudo apt-get update

i uzyskaj identyfikator pub_key. Następnie przejdź do strony http://keyserver.ubuntu.com/ i wyszukaj klucz w systemie szesnastkowym, na przykład jeśli klucz jest 7936A783B, a następnie wyszukaj 0x7936A783B. Kliknij link pup i skopiuj zawartość kluczy i zapisz go w pliku txt. Przejdź do terminala i przejdź do pliku i uruchom:

sudo apt-key add key.txt

Jeśli to zadziała, otrzymasz prostą OKinformację zwrotną. Po dodaniu wszystkich kluczy możesz uruchomić:

sudo apt-get update

i masz to!

DKo
źródło
3
To jest miłe; możliwe jest również użycie adresu URL otrzymanego dosłownie apt-keyw następujący sposób:apt-key adv --fetch-keys http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xD6ACA1C817B18ABC
sxc731
2
@ sxc731 - apt-keyStrona podręcznika mówi: „Zauważ, że nie są wykonywane żadne kontrole, więc łatwo jest całkowicie podważyć infrastrukturę apt-secure (8), jeśli jest używana bez opieki”. Oznacza to, że naprawdę nie chcesz tego robić bez SSL. Zmień to na --fetch-keys https://…i powinieneś być względnie bezpieczny.
Adam Katz
@AdamKatz bardzo dobry punkt, dzięki. Niestety nie mogę edytować komentarza, aby zastosować twoją sugestię, ale mimo to głosowałem ...
sxc731
--fetch-keysOpcja nie powiodło się dla mnie z błędu: https://keyserver.ubuntu.com/pks/lookup?op=get gpgkeys: protocol https' nie jest obsługiwana gpg: brak obsługi dla programu keyserverhttps' gpg: WARNING: unable to fetch URI https://keyserver.ubuntu.com/pks/lookup?op=get: keyserver error
miguelmorin
Dzięki, dokładnie tego szukałem.
Miguel Ortiz
1

Drugie podejście wymienione w tym linku zadziałało dla mnie. Ręcznie pobierz klucz i dodaj go. Link zawiera procedurę krok po kroku, aby naprawić błąd występujący z powodu braku klucza.

Aniket Thakur
źródło