Jak naprawić brakujące klucze GPG?

154

Właśnie zainstalowałem Ubuntu 12.04 i dodałem kilka repozytoriów, a kiedy to zrobiłem apt-get update, brakowało mi klucza gpg.

Następujące polecenie wydaje się nie działać dla mnie:

apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done

Jak rozwiązać ten problem?

Fih
źródło
1
Byłoby dobrze, gdyby odpowiedzi na to pytanie zawierały przede wszystkim przyczyny tego błędu i co zrobić, aby go uniknąć w przyszłości.
Flimm,
Rozwiązałem swój problem za pomocą Y-ppa-manager. Dzięki Ashu za rozwiązanie!
1
Szczegółowe rozwiązanie ze zrzutami ekranowymi opensourceforgeeks.blogspot.in/2013/04/…
Aniket Thakur,
1
Powiązane: askubuntu.com/q/13065/178596
Wilf

Odpowiedzi:

222

Podobało mi się to rozwiązanie, ponownie pobierz brakujące klucze z serwera kluczy Ubuntu.

Dla Ubuntu

W moim przypadku

 Reading package lists... Done  
 W: GPG error: http://ppa.launchpad.net precise 
 Release: The following signatures couldn't be verified because the public key is not available: 
 NO_PUBKEY 2EA8F35793D8809A

Oto polecenie dodania brakującego klucza wymienionego w komunikacie o błędzie.

sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A

Biorę więc brakujący klucz 2EA8F35793D8809Ai proszę keyserver.ubuntu.com o dodanie go do listy kluczy, które mam w apt.

Dla Linuksa mięta
Twój kluczowy serwer jest nieco innykeyserver.linuxmint.com

sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"

Alternatywne serwery kluczy do wypróbowania
keyserver.ubuntu.com

nelaaro
źródło
1
askubuntu.com/a/136735/10998 nie działało dla mnie.
nelaaro
5
Czy ma to jakiś wpływ na bezpieczeństwo? Po prostu pobieram klucz publiczny przez http, prawda?
Ajedi32,
1
@iamcreasy, aby udowodnić instalacjom Ubuntu, że instalowane pakiety są bezpieczne i wolne od złośliwego oprogramowania, każdy pakiet jest podpisany przez serwer kluczy Ubuntu. Instalator sprawdza więc, czy instalowany pakiet pochodzi z zaufanego i zweryfikowanego źródła. Nie znalazłem żadnej naprawdę dobrej dokumentacji na ten temat, ale mogłoby to pomóc [gpg doc] ( help.ubuntu.com/community/… )
nelaaro
1
Stworzyłem funkcję dodawania potrzebnych kluczy. adkeys (){ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$1";}Aby usunąć zduplikowane lub problematyczne klucze, używam do tego:grep -ril "pattern" /etc/apt | sudo xargs rm -f
SergioAraujo
1
Polecam --keyserver ha.pool.sks-keyservers.net. Jest to pula kluczy o wysokiej dostępności, która znacznie zwiększa szansę na uzyskanie klucza, którego potrzebujesz.
Robin jak ptak
21

Istnieje oprogramowanie o nazwie „ Y PPA managerMoże pomóc naprawić błędy kluczy GPG”.
Menedżer PPA

Żeby zainstalować -

sudo add-apt-repository ppa:webupd8team/y-ppa-manager  
sudo apt-get update  
sudo apt-get install y-ppa-manager    

Po zainstalowaniu uruchom go, a następnie przejdź do advancei wybierz „zaimportuj wszystkie brakujące klucze GPG”

Ashu
źródło
2
Musisz dodać sudo do tego polecenia! sudo apt-get...
Fih
Działa to również dla mnie i jestem pod wrażeniem czystego, łatwego w użyciu interfejsu Y PPA Manager. To miłe odkrycie, dzięki Ashu.
CoalaWeb
Zrobiłem, co mówisz, ale nic się nie stało. Mam na myśli to, że nie mogę znaleźć aplikacji nigdzie w menu.
Cristiana Nicolae
@CristianaNicolae Po zainstalowaniu Menedżera PPA można znaleźć w Aplikacje> Narzędzia systemowe.
Ashu,
Przepraszam Ashu, sprawdziłem i sprawdziłem dwukrotnie. Nadal tego nie widzę. Wygląda na to, że jest zainstalowany gdzieś w systemie, ale z pewnych powodów nie pojawia się nigdzie w menu.
Cristiana Nicolae
14

Automatyczne pobieranie apt-key adv --recv-keysmoże nie działać za zaporą ogniową.

W takim przypadku otwórz stronę Ubuntu Key Server w przeglądarce internetowej i wyszukaj ciąg 0x<hexadecimal code of your missing key>.

Otwórz link w sekcji pubu . Zapisz kluczową zawartość (od -----BEGIN PGP PUBLIC KEY BLOCK-----do -----END PGP PUBLIC KEY BLOCK-----) jako plik.

Następnie uruchomić:

sudo apt-key add <file-with-saved-key>

Źródło: http://opensourceforgeeks.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html

Melebius
źródło
12

najpierw wprowadź następujące polecenie w terminalu

 sudo rm /var/lib/apt/lists/* -vf

następnie zaktualizuj system, wprowadzając następujące polecenie w terminalu

 sudo apt-get update && sudo apt-get upgrade

po tym nie powinno być żadnych błędów i wszystko powinno działać dobrze.

Bharat
źródło
dziękuję za odpowiedź. Rozwiązanie mojego problemu było znacznie prostsze: wpisz sudo suprzed wpisaniem mojego polecenia powyżej
Fih
Chociaż to ci pomogło, nie sudo sujest w żaden sposób właściwym podejściem - w tym przypadku sudo -szrobiłbyś to, czego potrzebowałeś.
guntbert
Myślę, że miałeś na myśli sudo rm /var/lib/apt/lists/* -rf(opcja „r” zamiast „v”)
Oliboy50
9
Używając obu sudoi rmjest niebezpieczne. Używając obu rmi *jest niebezpieczne. Użyj trzech w tym samym poleceniu, a rekin ugryzie cię lub twoje pliki.
JB.
To mi nie działa.
WiSaGaN
9

Dla Ubuntu 12.04 Precise: trwałe rozwiązanie

na ten komunikat o błędzie pojawiający się po dodaniu nowego repozytorium i aktualizacji listy repozytoriów. Wynika to z serwera, którego adres nie jest już prawidłowy. Więc po prostu zmień adres na dobry.

  1. Otwórz plik ~/.gnupg/gpg.confza pomocą edytora tekstu.

    W terminalu: gedit ~/.gnupg/gpg.conf

  2. następnie w tym pliku znajdź następującą pogrubioną linię (116. linia) (która powinna być domyślna jak poniżej):

    [...]
    keyserver hkp: //keys.gnupg.net
    # keyserver mailto: [email protected]
    # keyserver ldap: //keyserver.pgp.com

  3. następnie dodaj następujący pogrubiony wiersz, aby w końcu dać następujący wynik:

    (dodaj # do drugiego wiersza w następujący sposób, aby skomentować stary adres)

    [...] keyserver hkp: //keys.gnupg.net # keyserver mailto: [email protected] # keyserver ldap: //keyserver.pgp.com
    keyserver http://keyserver.ubuntu.com
    #

  4. Zapisz plik i spróbuj zaktualizować ponownie:

    W terminalu: sudo apt-get update

blitzter47
źródło
7

Na podstawie odpowiedzi Nelaar:

sudo apt-get update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' |
while read key; do
    echo 'Processing key:' "$key"
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$key"
done

Skrypt zrzuca wszystkie błędy do pliku tymczasowego, a następnie zapętla je, importując brakujące klucze.

Zafarella
źródło
6

Najłatwiejsza droga to Y PPA MAnager

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager 

Otwórz Y PPA Manager od Dash

wprowadź opis zdjęcia tutaj

Wpisz swoje hasło administratora

wprowadź opis zdjęcia tutaj

Kliknij dwukrotnie opcję zaawansowaną

wprowadź opis zdjęcia tutaj

Kliknij Spróbuj zaimportować wszystkie brakujące klucze GPG

wprowadź opis zdjęcia tutaj

Kliknij Ok, aby to naprawić

Qasim
źródło
4

Najpierw wprowadź następujące polecenie w terminalu

sudo rm /var/lib/apt/lists/* -vf

następnie zaktualizuj system, wprowadzając następujące polecenie w terminalu

sudo apt-get update && sudo apt-get upgrade

po tym nie powinno być żadnych błędów i wszystko powinno działać dobrze.

DaniilPiter
źródło
2

Dla mnie zadziałało najpierw usunięcie klucza, a następnie ponowna instalacja. Aby to osiągnąć, wykonałem następujące czynności:

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5

usuwanie z

root@ > ~: sudo apt-key del 630239CC130E1A7FD81A27B140976EAF437D05B5

Następnie zainstaluj ponownie, pisząc

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5
QuixRhyno
źródło
1

Napotkałem ten sam problem, ponieważ dodanie ppa ( ppa:nathandyer/vocal-stable) spowodowało uszkodzenie moich repozytoriów. Zostałem poprowadzony przez autora aktualizacji sieci Web8, w jaki sposób mogę to naprawić, oto jego kroki, które mnie zadziałały.

Wykonaj kopię zapasową .gpgkluczy, na wypadek, gdyby coś poszło nie tak.

Zróbmy folder, w którym będziemy przechowywać naszą kopię zapasową.

  • mkdir ~/gpg-backups

    Spowoduje to utworzenie kopii zapasowej wszystkich plików w /etc/apt/trusted.gpg.d/folderze.

  • sudo cp /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/

Teraz usuniemy wszystkie .gpgklucze.

  • sudo rm /etc/apt/trusted.gpg.d/

  • sudo cp /etc/apt/trustdb.gpg ~/gpg-backups/

  • sudo rm /etc/apt/trustdb.gpg

w sekcji Oprogramowanie i aktualizacje, na karcie „Uwierzytelnianie” kliknij „Przywróć domyślne

Zainstaluj menedżera y-ppa, aby zaimportować wszystkie brakujące klucze GPG

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Odniesienie :

blade19899
źródło
1
Jedna linia wydaje się zawierać błąd, musi być sudo rm /etc/apt/trusted.gpg.d/*. Pominięcie *w EOL nie jest możliwe, ponieważ nie można usunąć niepustych katalogów, rmgdy -ropcja nie jest określona. - Ach, i możesz zabić 2 ptaki za pomocą 1 kamienia przy linii sudo mv /etc/apt/trustdb.gpg ~/gpg-backups/. Ponieważ jeśli przenosisz plik, nie potrzebujesz rmpóźniej pliku źródłowego.
składnia błąd
1

Chciałem automatycznie naprawić takie błędy w skrypcie bash. Dla wszystkich zainteresowanych powinno to załatwić sprawę:

sudo apt-get update 2> /tmp/keymissing
if [ -f /tmp/keymissing ]
then
    for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //")
        do 
        echo -e "\nProcessing key: $key"
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        sudo apt-get update
    done
    rm /tmp/keymissing
fi
użytkownik2304170
źródło
0

Jeśli masz coś takiego:

# aptitude update
...
Ign http://archive.canonical.com wily/partner Translation-en_US
Fetched 422 kB in 3s (130 kB/s)
W: GPG error: http://ubuntu.volia.net wily InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

Najpierw spróbuj:

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

Wyjście ostatniego polecenia może być:

gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_experiments.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_gthumb.gpg': resource limit

Więc musisz iść /etc/apt/trusted.gpg.d/i usunąć nieużywane klucze, a następnie powtórzyć apt-key adviaptitude update

ipeacocks
źródło
0

Biegać wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

towfiqpiash
źródło
-1

Ten problem przyszedł mi do głowy, gdy instaluję 12.04 przy użyciu ustawień niemieckich. Lista repozytoriów korzysta wówczas domyślnie z niemieckich repozytoriów lustrzanych. W takim przypadku możesz edytować listę repozytoriów i zmienić wszystkie niemieckie repozytoria lustrzane na standardowe repozytoria Ubuntu.

Możesz użyć następującej metody:

sudo nano /etc/apt/sources.list

Wyszukaj i zamień w Nano za pomocą Alt-r

Wyszukaj (do zastąpienia): /de.

Zamienić: /

Zamień wszystko (naciśnij A)

Zapisz plik Ctrl-x

Następnie zaktualizuj system, wprowadzając następujące polecenie w terminalu:

sudo apt-get update && sudo apt-get upgrade

Po tym nie powinno być żadnych błędów i wszystko powinno działać poprawnie.

taufan
źródło
2
To tak naprawdę nie odpowiada na pytanie PO, szczególnie biorąc pod uwagę, że nie korzystali oni ze źródeł.
Kevin Bowen,