Jak naprawić błąd GPG „NO_PUBKEY”?

364

Dodałem dodatkowe repozytoria z programem Software Sources. Ale po ponownym załadowaniu bazy danych pakietów pojawia się błąd podobny do następującego:

W: Błąd GPG: http://ppa.launchpad.net zaufany InRelease: Następujących podpisów nie można zweryfikować, ponieważ klucz publiczny jest niedostępny: NO_PUBKEY 8BAF9A6F

Wiem, że mogę to naprawić za apt-keypomocą terminala, zgodnie z oficjalną dokumentacją Ubuntu. Ale chciałbym to zrobić graficznie. Czy można to zrobić bez użycia terminala?

Agmenor
źródło
„Wredny”? Ciekawe, co miałeś na myśli.
Michael Scheper,
1
Możesz sprawdzić ten wątek SO pod kątem rozwiązania. Link do strony pokrewnej
Aniket Thakur,
@MichaelScheper „Czy istnieje sposób, aby nie otwierać terminala?” = ~ 'Czy można to zrobić bez terminala? ”
Wilf
@Wilf: Oh! Nie mam zamiaru dręczyć gramatyki, ale to mnie zdezorientowało. Z referencji, którą właśnie sprawdziłem, „znaczy” to rzeczownik w liczbie pojedynczej, o której mówiłeś. dictionary.cambridge.org/dictionary/english/means Ale jeśli ty i Agmentor używacie jakiejś odmiennej formy języka angielskiego, w której gramatyka w pytaniu jest poprawna, chciałbym zobaczyć odniesienie, tylko dlatego, że jestem zainteresowany coś w tym rodzaju. ☺
Michael Scheper,

Odpowiedzi:

211

Zdecydowanie najprostszym sposobem poradzenia sobie z tym teraz jest Y-PPA-Manager (który teraz integruje launchpad-getkeysskrypt z interfejsem graficznym).

  1. Aby go zainstalować, najpierw dodaj repozytorium webupd8 dla tego programu:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. Zaktualizuj listę oprogramowania i zainstaluj Menedżera Y-PPA:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. Uruchom y-ppa-manager (tzn. Wpisz, y-ppa-managera następnie naciśnij klawisz Enter).

  4. Kiedy pojawi się główne okno menedżera y-ppa, kliknij „Zaawansowane”.

  5. Z listy zaawansowanych zadań wybierz „Spróbuj zaimportować wszystkie brakujące klucze GPG” i kliknij OK.

    Jesteś skończony! Jak mówi okno dialogowe z ostrzeżeniem po rozpoczęciu operacji, może to zająć trochę czasu (dla mnie około 2 minut) w zależności od liczby posiadanych PPA i szybkości połączenia.

monotasker
źródło
18
Niezbyt przydatne w serwerze internetowym, ponieważ instaluje X11. Nie używaj tej metody, jeśli korzystasz z wersji serwerowej, sprawdź odpowiedź karthick87!
goncalotomas
2
Czy pozwala to na weryfikację importowanych kluczy, czy po prostu importujesz wszystko na ślepo (a zatem ufasz każdemu, kto ma PPA)?
Paŭlo Ebermann
2
Importujesz (i ufasz) klucze do każdego PPA dodanego do systemu. Zakładamy, że ufasz tym PPA i sprawdziłeś je przed dodaniem ich za pośrednictwem apt.
monotasker
6
Ta odpowiedź jest zdecydowanie łatwiejsza i faktycznie wymaga mniej poleceń niż ta „graficzna” odpowiedź.
jpaugh 27.07.17
1
Ale pytanie dotyczyło metody graficznej.
monotasker
555

Wykonaj następujące polecenia w terminalu

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

gdzie <PUBKEY>jest brakujący klucz publiczny do repozytorium, np 8BAF9A6F.

Następnie zaktualizuj

sudo apt-get update

METODA ALTERNATYWNA:

sudo gpg --keyserver pgpkeys.mit.edu --recv-key  <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo apt-key add -
sudo apt-get update

Pamiętaj, że podczas importowania takiego klucza za pomocą tego systemu apt-keymówisz systemowi, że ufasz kluczowi, który importujesz, aby podpisać oprogramowanie, którego będzie używał Twój system. Nie rób tego, chyba że masz pewność, że klucz jest tak naprawdę kluczem dystrybutora pakietów.

karthick87
źródło
2
@ Naruto To normalne. Oznacza to, że lista nie zmieniła się na serwerze.
ζ--
9
Możesz po prostu przekazać NO_PUBKEYwartość jako parametr klucza. na przykład błąd GPG [...] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi
23
8BAF9A6F <- skąd masz ten numer?
Olivier Lalonde
13
Liczba 8BAF9 ... jest tym, co widać w pierwotnym błędzie. To byłoby coś w stylu NO_PUBKEY 8BAF ...
Alex
9
Gdyby ktoś majstrował przy danych między mną a repozytorium i podmieniał rzeczy, które podpisał, skończyłoby się to tym, że po prostu dodałem klucz, którego użyli, mniej więcej na ślepo. Jak wygląda proces sprawdzania, czy klucz jest właściwy?
mc0e,
43

Dzieje się tak, gdy nie masz odpowiedniego klucza publicznego do repozytorium.

Aby rozwiązać ten problem, użyj tego polecenia:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21

który pobiera klucz z serwera kluczy ubuntu. A potem to:

gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -

który dodaje klucz do apt zaufanych kluczy.

Rozwiązanie można znaleźć tutaj i tutaj i tutaj .

Pedram
źródło
4
Jeśli hkp: //keyserver.ubuntu.com nie działa, użyj tego pgpkeys.mit.eduserwera.
RajaRaviVarma
1
Ta odpowiedź rozwiązała mój problem z repozytorium Kylin. Metoda wprowadzania sogou pinyin dodała źródło do mojego /etc/apt/sources.list.d/folderu, ale najwyraźniej nie importowała klucza gpg. Dobra odpowiedź, prosta i na temat, +1!
Sergiy Kolodyazhnyy 08.08.16
1
Dzięki! Pracowałem dla mnie, aby rozwiązać problem z repozytorium php.
Akash Agarwal
1
Ta odpowiedź rozwiązała moją aktualizację dlahttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw
i całkiem możliwe, że wcześniej nie wygenerowałeś klucza dla swojego systemu. dlatego przed wykonaniem powyższych kroków użyj - gpg --gen-key (odnośniki - opakowanie.ubuntu.com/html/getting-set-up.html )
parasrish
35

Musisz zdobyć i zaimportować klucz.

Aby uzyskać klucz z PPA, odwiedź stronę Launchpad PPA. Na każdej stronie PPA w Launchpad znajdziesz ten link (2), po kliknięciu na „Szczegóły techniczne tego PPA” (1):

zdjęcie 1

Postępuj zgodnie z nim i kliknij link ID klucza (3):

zdjęcie 2

Zapisz stronę, to jest twój plik klucza.


Czas zaimportować:

  • Applications > Software Center,
  • Edit > Software sources...,
  • Wprowadź hasło,
  • Idź do Authenticationzakładki i Import Key File...wreszcie kliknij
  • Wybierz zapisany plik klucza i kliknij OK.
htorque
źródło
1
Nie trać czasu, zobacz odpowiedź poniżej.
Felipe
5
@FelipeMicaroniLalli, pytanie brzmiało, jak dodać klucz publiczny za pomocą GUI, a nie terminala, więc ta odpowiedź była idealna.
Chris Woods
Teraz jest to o wiele łatwiejsze i szybsze dzięki Y-ppa-manager (także aplikacji GUI). Zobacz moją odpowiedź poniżej.
monotasker
1
OK, ale co jeśli repozytorium nie jest puntem Ubuntu. Np. Intel prowadzi własne repozytorium sterowników sprzętu wideo na stronie download.01.org
mc0e
Świetny przewodnik krok po kroku, wielkie dzięki! bardzo pomocne dla kogoś, kto nie dodał klucza przez apt-key.
Roy Ling,
12

apt może obsłużyć tylko 40 kluczy w /etc/apt/trusted.gpg.d. 41 kluczy, a pojawi się błąd GPG „nie znaleziono klucza publicznego”, nawet jeśli wykonasz wszystkie czynności, aby dodać brakujące klucze.

Sprawdź, czy w tym pliku znajdują się nieużywane klucze od ppa (s), których już nie używasz. Jeśli wszystkie są w użyciu, rozważ usunięcie niektórych plików ppa wraz z odpowiednimi plikami kluczy w pliku /etc/apt/trusted.gpg.d

Ponadto za pomocą

sudo apt-key adv

Jest uważany za zagrożenie dla bezpieczeństwa i nie jest zalecany, ponieważ „ podważasz całą koncepcję bezpieczeństwa, ponieważ z różnych powodów nie jest to bezpieczny sposób otrzymywania kluczy (np .: hkp jest protokołem jawnego tekstu, można fałszować krótkie, a nawet długie klucze,… ) ”. http://ubuntuforums.org/showthread.php?t=2195579

Uważam, że poprawnym sposobem dodania brakujących kluczy (na przykład 1ABC2D34EF56GH78) jest

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -
mchid
źródło
1
Odkryłem, że łatwiej jest po prostu usunąć wszystkie klucze z /etc/apt/trusted.gpg.d, a następnie przejść do zaakceptowanej odpowiedzi askubuntu.com/a/386003/284664
2015
@mchid Czy możesz podać dokument / adres URL, który mówi o limicie 41 kluczy?
SebMa
@SebMa Link jest opublikowany w mojej odpowiedzi i wskazuje na błąd w Debianie, na który wpływ miał ten limit. Oto kotwica do rzeczywistego postu w linku, który wspomina o tym: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 Nie jestem pewien, czy istnieje rzeczywista dokumentacja na ten temat, ale numer 40 mógł zostać użyty, ponieważ „40 „tłumaczy się na„ dużo ”w wielu różnych językach.
mchid
@SebMa Jednak limit istnieje lub istniał w momencie udzielania odpowiedzi i przez pewien czas również. Osobiście doświadczyłem tego limitu 41 kluczy i naprawiłem go, usuwając nieużywane klucze, aby dodać nowy klucz, gdy już 40 kluczy istniało, aby uniknąć tego błędu.
mchid
1
@SebMa no wiki.debian.org/SecureApt
mchid
9

W PPU WebUpd8 znajduje się mały skrypt, który podlinkuję jako pojedyncze pobranie .deb, więc nie musisz dodawać całego PPA - który automatycznie importuje wszystkie brakujące klucze GPG.

Pobierz i zainstaluj Launchpad-getkeys (zignoruj ​​~ natty w swojej wersji, działa ze wszystkimi wersjami Ubuntu od Karmic aż do Oneiric). Po zainstalowaniu otwórz terminal i wpisz:

sudo launchpad-getkeys

Jeśli jesteś za serwerem proxy, sprawy są nieco bardziej skomplikowane, więc zobacz to, aby uzyskać więcej informacji

Alin Andrei
źródło
1
Tak właśnie jest teraz, ponieważ widziałem ten program prezentowany na twojej stronie internetowej. Niemniej jednak celem tego pytania było wiedzieć, jak to zrobić w sposób graficzny.
Agmenor,
Skrypt launchpad-getkeys jest teraz zintegrowany z programem Y-PPA-manager. launchpad.net/~webupd8team/+archive/y-ppa-manager
monotasker
5

Napotkałem ten sam problem podczas instalacji Heroku. Poniższy link rozwiązał mój problem -

http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html

Po rozwiązaniu NO_PUBKEYproblemu pozostał następujący problem

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <[email protected]>

Aby to naprawić, wykonałem następujące polecenia w terminalu:

sudo -i  
apt-get clean  
cd /var/lib/apt  
mv lists lists.old  
mkdir -p lists/partial  
apt-get clean  
apt-get update  

Źródło - Link do rozwiązania

dennyac
źródło
4

Upewnij się, że apt-transport-httpszainstalowałeś:

dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; 
sudo apt-get install apt-transport-https -y" 

Dodaj repozytorium:

curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - 
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list 

Zainstaluj Skype dla Linux:

sudo apt-get update 
sudo apt-get install skypeforlinux -y

Źródło: https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756

Eduardo Cuomo
źródło
3

Mówiąc bardziej ogólnie, dla każdego repozytorium powinna działać następująca metoda. Po pierwsze, za pomocą wyszukiwarki wyszukaj tekst w witrynie dostawcy programu, który wygląda następująco:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----

Taki tekst jest na przykład wyświetlany na stronie http://deb.opera.com . Skopiuj fragment, wklej go do pustego pliku utworzonego na pulpicie. Powoduje to utworzenie pliku klucza.

Następnie kontynuuj importowanie klucza:

  • Aplikacje> Centrum oprogramowania
  • Edycja> Źródła oprogramowania ..., wprowadź hasło
  • Karta Uwierzytelnianie, kliknij „Importuj plik klucza ...”
  • Wybierz zapisany plik klucza i kliknij „Ok”.

Możesz teraz usunąć wcześniej utworzony plik klucza.

Agmenor
źródło
3

Dobry! W końcu znalazłem sposób!

Przetestowałem wszystkie metody, aby naprawić błąd GPG NO_PUBKEY i nic nie działa dla mnie.

Usunąłem całą zawartość folderu /etc/apt/trusted.gpg.d

cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update

I używam metody Y-PPA-Manager , ponieważ jestem zbyt leniwy, aby ręcznie utworzyć wszystkie klucze pubkey (zbyt wiele): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

uruchom ponownie sudo apt-get update i na koniec wszystko działa świetnie teraz! Czołgi!

Na podstawie źródła: post nr 17 na https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540

NeurOSick
źródło
To była jedyna rzecz, która również działała dla mnie. Prawdopodobnie gdzieś uszkodzony plik klucza?
donnek
0

Miałem ten sam problem z klientem DynDNS Updater.

Okazuje się, że właśnie wygasły klucze.

Ponowna instalacja oprogramowania (pobranie nowej wersji .debze strony internetowej, a następnie ponowne zainstalowanie oprogramowania za pomocą Centrum oprogramowania) rozwiązała problem.

Komunikat o błędzie w celach informacyjnych:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
Zepsuty
źródło