"Nessuna chiave pubblica disponibile" su apt-get update


133

Durante l'esecuzione apt-get update, ottengo il seguente errore:

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
... e quella stringa che hai eletto è un po 'importante. Ci permetterebbe di identificare quali chiavi ti mancano (supponendo che l'installazione dei pacchetti di portachiavi - preferibilmente da supporti fidati - che ruda abbia suggerito di non aiutare)
derobert

1
Non dovresti lasciare che il tuo gatto cammini sulla tastiera in quel modo. :-) ⁠
G-Man il

Risposte:


173

Le altre risposte funzioneranno o meno, a seconda che sia presente o meno la chiave '8B48AD6246925553' nei pacchetti che indicano.

Se hai bisogno di una chiave, devi ottenere quella chiave e dove trovarla, si trova in un key server (molto probabilmente qualsiasi key server lo farà):

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

Questo ha funzionato anche per me e non altre risposte qui ..
Sai Kiran,

@starbeamrainbowlabs ora lo è! =)
Quel ragazzo brasiliano

@ThatBrazilianGuy: D
starbeamrainbowlabs

4
Esiste un modo per determinare se la chiave ricevuta è leggit in modo tale che posso fare un'operazione così pericolosa come aggiungere la fiducia apt globale a una chiave arbitraria? Esiste un modo per verificare la credibilità della chiave dopo che è stata ricevuta? Quali sono i passaggi da eseguire per eseguire la verifica chiave? Ad esempio, l'unica cosa che hai è ftp-master.debian.org/keys/ziyi_key_2002.asc, quindi come puoi accedere alla chiave più recente senza interrompere la catena di trust?
Tino,

1
@ThatBrazilianGuy: Il fatto che sia la tua domanda non ti dà il diritto di vandalizzare una risposta.
G-Man

76

Ti consiglio di seguire la risposta di @ mariotomo anziché i passaggi seguenti:


Secondo Non esiste una chiave pubblica disponibile per il seguente ID chiave , questo lo risolverà:

sudo aptitude install debian-archive-keyring

Riferimenti


Le ultime 8 cifre esadecimali sono condivise con questo, quindi probabilmente si lamenta del respiro sibilante. Peccato che il PO abbia eluso che: pub 4096R / 46925553 2012-04-27 [scadenza: 2020-04-25] uid Chiave firma automatica archivio Debian (7.0 / wheezy) <ftpmaster@debian.org>
Martin Dorey

5
È debian-keyringdavvero necessario? Ha funzionato per me con solo debian-archive-keyring.
x-yuri,

Non sorprende che numeri esadecimali diversi possano richiedere soluzioni diverse. Ho messo le virgolette attorno al numero nella mia ricerca di Google, per forzare una ricerca integrale di quel numero, e sono arrivato a questa pagina, che ha risolto il mio problema: reddit.com/r/linux4noobs/comments/4grdo7/… (la risposta di @ mariotomo potrebbe aver lavorato troppo-non ho provato)
Michael Scheper

debian-keyringnon è necessario.
x-yuri,

38

Io raccomando:

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

Questo è meglio di altri approcci perché non si installa debian-keyring, il che è grande e il 99% delle volte non è necessario.


1
Questo era tutto ciò di cui avevo bisogno - ha funzionato benissimo per me!
Harperville,

Lavora come un fascino!
Wilbeibi,

1
Questa è stata la soluzione migliore per me in quanto si adatta meglio a un contenitore Docker. Tuttavia, tieni presente che (almeno in Docker) devi prima installare solo questo pacchetto, quindi fare un secondo apt-get update, quindi installare i pacchetti che desideri davvero.
Malvineous,

Debian 10: Attenzione: 'aggiornamento apt-key' è deprecato e non dovrebbe più essere usato! Nota: nella tua distribuzione questo comando è no-op e può quindi essere rimosso in modo sicuro
aexl

In effetti, potrebbe essere necessario installare il debian-archive-keyring anche se il debian-keyring è installato sulla sua ultima versione
Ángel

17

L'errore Non esiste una chiave pubblica disponibile per i seguenti ID chiave indica un grave problema di sicurezza : non è possibile verificare l'integrità di un pacchetto del sistema operativo con la sua chiave pubblica, poiché manca la chiave pubblica.

Se il messaggio fosse:

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

È possibile utilizzare questo comando per scoprire quale repository utilizza la chiave:

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

Che in questo esempio è il repository di Google per Chrome:

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

Se ti fidi di Google, del suo governo, ecc., Dovresti scoprire dove si trova la chiave e aggiungerla con:

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

Risolto per me :) Grazie! Ma solo curioso, cosa c'era che non andava? Cosa fa il primo comando e cosa fa il secondo? Questo dovrebbe risolvere tutti i problemi? Il mio problema riguardava anche Google Chrome.
Rohan,

E il primo comando cambia qualcosa con gpg? Dice che ha creato un file conf gpg.conf e non so se lo voglio.
Rohan,

Il primo cerca la chiave nell'elenco dei pacchetti per vedere il pacchetto offensivo. Il secondo scarica la chiave e la aggiunge al tuo sistema. Il primo comando non è utile in questo caso, ma è buono come approccio generale.
Marco Sulla

3

Ho riscontrato lo stesso problema in Linux Mint (versione del kernel 3.13.0-24) e sono stato in grado di risolverlo usando i comandi:

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

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

Punti da notare:

1) I comandi sono stati eseguiti nell'ordine 2) I comandi sono stati eseguiti come utente root

Per gentile concessione di questa risposta.


1

Come alternativa:

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

6
Per favore, non pubblicizzare il tuo blog nelle risposte. Ecco a cosa serve la tua biografia.
slm

1

La mia risposta è un leggero aggiornamento (IMHO, YMMV) su @mariotomo (che ho votato) nel seguente script bash

  • usa anche gpg
  • parametrizza di più
  • (usa anche un keyserver diverso, anche se in questo caso sospetto che faccia poca differenza)

Puoi anche commentare la evalriga per un "giro a secco": lo scriptlet ti mostrerà solo ciò che intende fare, senza farlo effettivamente. Assicurati solo di cambiare il valore di NO_PUBKEYogni volta che lo usi (puoi anche cambiare KEYSERVERcome desideri):

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

Esegui killall -q gpg-agentse le altre soluzioni non funzionano. Potrebbe funzionare

Stavo ottenendo un errore simile per un repository PPA su Ubuntu 18.04 e dopo aver provato varie soluzioni su Internet nell'ultimo mese, mi sono imbattuto nell'agente gpg e l'ho ucciso. Quindi i repository PPA hanno iniziato ad aggiornarsi sudo apt-get update. So che potrebbe compromettere la sicurezza, ma a volte hai bisogno di un pacchetto da un PPA e GPG non te lo consente. Più tardi, riavvii l'agente gpg e le cose tornano alla normalità.


-1

Questo ha funzionato per me:

Rimedio rapido:

sudo rm -f /etc/apt/trusted.gpg

( Fonte )

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.