„Brak klucza publicznego” przy aktualizacji apt-get


133

Podczas wykonywania apt-get updatepojawia się następujący błąd:

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR

(...)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553

2
... a ten łańcuch, który wymyśliłeś, jest bardzo ważny. Pozwoli nam to zidentyfikować klucze, których brakuje (zakładając, że instalacja pakietów kluczy - najlepiej z zaufanych mediów - które sugeruje ruda, nie pomaga)
derobert

1
Nie należy pozwalać kotowi chodzić po klawiaturze w ten sposób. :-) ⁠
G-Man

Odpowiedzi:


173

Inne odpowiedzi będą działać, w zależności od tego, czy klucz „8B48AD6246925553” jest obecny w wskazanych przez nich pakietach.

Jeśli potrzebujesz klucza, musisz go zdobyć, a gdzie go znaleźć, znajduje się on na serwerze kluczy (najprawdopodobniej zrobi to każdy serwer kluczy):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553

To również zadziałało dla mnie, a nie innych odpowiedzi tutaj.
Sai Kiran

@starbeamrainbowlabs teraz jest! =)
Ten Brazylijczyk

@ThatBrazilianGuy: D
starbeamrainbowlabs

4
Czy jest jakiś sposób, aby ustalić, czy otrzymany klucz jest legalny, tak że mogę wykonać tak niebezpieczną operację, jak dodanie globalnego apt-trustu do dowolnego dowolnego klucza? Czy jest jakiś sposób na sprawdzenie wiarygodności klucza po jego otrzymaniu? Jakie kroki należy wykonać, aby przeprowadzić weryfikację klucza? Na przykład jedyną rzeczą, którą masz, jest ftp-master.debian.org/keys/ziyi_key_2002.asc, więc jak dostać się do najnowszego klucza bez zerwania łańcucha zaufania?
Tino

1
@ThatBrazilianGuy: Fakt, że to twoje pytanie, nie daje ci prawa do zdemaskowania odpowiedzi.
G-Man,

76

Zalecam postępowanie według odpowiedzi @ mariotomo zamiast poniższych kroków:


Według Nie ma dostępnego klucza publicznego dla następującego identyfikatora klucza , to go naprawi:

sudo aptitude install debian-archive-keyring

Bibliografia


Ostatnie 8 cyfr szesnastkowych jest z tym współdzielonych, więc prawdopodobnie narzeka na świszczący oddech. Niefortunne, że OP zdecydował, że: pub 4096R / 46925553 27.04.2012 [wygasa: 2020-04-25] Uid Debian Archive Automatic Key Signing (7.0 / wheezy) <ftpmaster@debian.org>
Martin Dorey

5
Czy debian-keyringnaprawdę jest potrzebny? U mnie to zadziałało debian-archive-keyring.
x-yuri,

Nic dziwnego, że różne liczby szesnastkowe mogą wymagać różnych rozwiązań. Umieszczam cudzysłowy wokół numeru w wyszukiwarce Google, aby wymusić pełne wyszukiwanie tego numeru, i wylądowałem na tej stronie, co naprawiło mój problem: reddit.com/r/linux4noobs/comments/4grdo7/… (odpowiedź @ mariotomo być może też zadziałało - nie próbowałem)
Michael Scheper 30.04.16

debian-keyringnie jest potrzebne.
x-yuri

38

Polecam:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update

Jest to lepsze niż inne podejścia, ponieważ nie instaluje się debian-keyring, co jest duże i 99% czasu jest niepotrzebne.


1
To wszystko, czego potrzebowałem - działało świetnie dla mnie!
harperville,

Pracuj jak urok!
Wilbeibi

1
To było dla mnie lepsze rozwiązanie, ponieważ lepiej pasuje do pojemnika Docker. Należy jednak pamiętać, że (przynajmniej w Docker) najpierw musisz zainstalować tylko ten pakiet, a następnie zrobić drugi apt-get update, a następnie zainstalować pakiety, które naprawdę chcesz.
Malvineous,

Debian 10: Ostrzeżenie: „aktualizacja apt-key” jest przestarzała i nie powinna być już używana! Uwaga: W swojej dystrybucji ta komenda jest no-op i dlatego może być bezpiecznie usunięte
aexl

W rzeczywistości może być konieczne zainstalowanie breloka archiwum-debian, nawet jeśli masz najnowszy brelok-debian
Ángel,

17

Błąd Brak klucza publicznego dla następujących identyfikatorów kluczy wskazuje na poważny problem z bezpieczeństwem : pakietu systemu operacyjnego nie można sprawdzić pod kątem integralności z kluczem publicznym, ponieważ brakuje klucza publicznego.

Jeśli wiadomość brzmiała:

There is no public key available for the following key IDs: 1397BC53640DB551

Możesz użyć tego polecenia, aby dowiedzieć się, które repozytorium używa klucza:

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done

Który w tym przykładzie jest repozytorium Google dla Chrome:

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

Jeśli ufasz Google, jego rządowi itp., Powinieneś dowiedzieć się, gdzie jest klucz i dodać go za pomocą:

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

Naprawiono dla mnie :) Dziękuję! Ale po prostu ciekawy, co się stało? Co robi pierwsze polecenie i co drugie? Czy to powinno rozwiązać wszystkie problemy? Mój problem dotyczył także Google Chrome.
Rohan

I czy pierwsze polecenie zmienia cokolwiek w gpg? Mówi, że stworzył plik conf gpg.conf i nie wiem, czy tego chcę.
Rohan

Pierwszy szuka klucza na liście pakietów, aby zobaczyć pakiet, który go narusza. Drugi pobiera klucz i dodaje go do systemu. Pierwsze polecenie nie jest przydatne w tym przypadku, ale jest dobre jako ogólne podejście.
Marco Sulla,

3

Ten sam problem napotkałem w Linux Mint (jądro wersja 3.13.0-24) i udało mi się go rozwiązać za pomocą poleceń:

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

Punkty do odnotowania:

1) Polecenia zostały wykonane w kolejności 2) Polecenia zostały wykonane jako użytkownik root

Dzięki uprzejmości tej odpowiedzi.


1

Jako alternatywa:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update

6
Nie reklamuj swojego bloga w swoich odpowiedziach. Po to jest twoja biografia.
slm

1

Moja odpowiedź to niewielkie uaktualnienie (IMHO, YMMV) na @mariotomo (którego głosowałem) w poniższym skrypcie bash

  • również używa gpg
  • parametryzuje więcej
  • (używa również innego serwera kluczy, choć w tym przypadku podejrzewam, że nie ma to większego znaczenia)

Możesz także skomentować evalwiersz „biegu na sucho”: skryptlet pokaże ci tylko, co zamierza zrobić, bez robienia tego. Pamiętaj tylko, aby zmieniać wartość za NO_PUBKEYkażdym razem, gdy tego używasz (możesz również zmienić KEYSERVERzgodnie z potrzebami):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done

0

Uruchom, killall -q gpg-agentjeśli inne rozwiązania nie działają. To może działać.

Otrzymałem podobny błąd dla repozytorium PPA na Ubuntu 18.04 i po wypróbowaniu różnych rozwiązań w Internecie przez ostatni miesiąc, natknąłem się na gpg-agent i zabiłem go. Następnie repozytoria PPA zaczęły się aktualizować sudo apt-get update. Wiem, że może to zagrozić bezpieczeństwu, ale czasami potrzebujesz pakietu z PPA, a GPG po prostu na to nie pozwala. Później ponownie uruchamiasz gpg-agent i wszystko wraca do normy.


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.