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?



„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.


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.


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 .


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.

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 -

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


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


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 <release@heroku.com>

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


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


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.


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


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.......
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.