Come posso correggere l'errore GPG "NO_PUBKEY"?


364

Ho aggiunto alcuni repository aggiuntivi con il programma Software Sources. Ma quando ricarico il database dei pacchetti, ricevo un errore simile al seguente:

W: Errore GPG: http://ppa.launchpad.net fidato InRelease: le seguenti firme non possono essere verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 8BAF9A6F

So di poterlo riparare usando apt-keyun terminale, secondo la documentazione ufficiale di Ubuntu. Ma mi sarebbe piaciuto farlo graficamente. C'è un modo per farlo senza usare un terminale?



'Un significato'? Curioso cosa volevi dire con quello.
Michael Scheper,

1
È possibile controllare questa discussione SO per la soluzione. Link al sito collegato
Aniket Thakur,

@MichaelScheper 'Esiste un mezzo per non aprire un terminale?' = ~ 'C'è un modo per farlo senza un terminale?'
Wilf,

@Wilf: Oh! Non intendo azzeccare la grammatica, ma mi ha confuso. Dal riferimento che ho appena controllato, "significa" è un nome singolare, e quello che intendevi dire. dizionario.cambridge.org/dictionary/english/means Ma se tu e Agmentor state usando una variante dell'inglese in cui la grammatica nella domanda è corretta, mi piacerebbe vedere un riferimento ad essa, solo perché mi interessa questo genere di cose. ☺
Michael Scheper,

Risposte:


211

Di gran lunga il modo più semplice di gestirlo ora è con Y-PPA-Manager (che ora integra lo launchpad-getkeysscript con un'interfaccia grafica).

  1. Per installarlo, aggiungi prima il repository webupd8 per questo programma:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. Aggiorna il tuo elenco di software e installa Y-PPA-Manager:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. Esegui y-ppa-manager (ovvero digita y-ppa-managerquindi premi il tasto Invio).

  4. Quando viene visualizzata la finestra principale di y-ppa-manager, fai clic su "Avanzate".

  5. Dall'elenco delle attività avanzate, selezionare "Prova a importare tutte le chiavi GPG mancanti" e fai clic su OK.

    Hai finito! Come indica la finestra di dialogo di avviso all'avvio dell'operazione, potrebbero essere necessari alcuni minuti (circa 2 minuti per me) a seconda di quanti PPA hai e della velocità della tua connessione.


18
Non molto utile in un server web, in quanto installa X11. Non utilizzare questo metodo se utilizzi un'edizione server, controlla la risposta di karthick87!
goncalotomas,

2
Ciò consente di verificare le chiavi che vengono importate o stai semplicemente importando ciecamente tutto (e quindi ti fidi di tutti coloro che hanno un PPA)?
Paŭlo Ebermann,

2
Stai importando (e fidandoti) delle chiavi per ogni PPA che hai aggiunto al tuo sistema. Il presupposto è che ti fidi di quei PPA e li hai verificati prima di aggiungerli tramite apt.
monotasker,

6
Questa risposta è di gran lunga più semplice e in realtà richiede meno comandi rispetto a questa risposta "grafica".
jpaugh

1
Ma la domanda ha richiesto un metodo grafico.
monotasker,

557

Eseguire i seguenti comandi nel terminale

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

dove si <PUBKEY>trova la chiave pubblica mancante per il repository, ad es 8BAF9A6F.

Quindi aggiorna

sudo apt-get update

METODO ALTERNATIVO:

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

Nota che quando importi una chiave come questa apt-keystai dicendo al sistema che ti fidi della chiave che stai importando per firmare il software che il tuo sistema utilizzerà. Non farlo a meno che tu non sia sicuro che la chiave sia davvero la chiave del distributore di pacchetti.


2
@Naruto È normale. Significa che l' elenco non è cambiato sul server.
ζ--

9
Puoi semplicemente passare il NO_PUBKEYvalore come parametro keys. ad esempio errore GPG [...] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi

23
8BAF9A6F <- dove hai preso quel numero?
Olivier Lalonde

13
Il numero 8BAF9 ... è quello che vedi nell'errore originale. Sarebbe qualcosa di simile a NO_PUBKEY 8BAF ...
Alex

9
Se qualcuno manomettesse i dati tra me e il repository e sostituisse le cose che avevano firmato, questo finirebbe con me semplicemente aggiungendo la chiave che hanno usato, più o meno alla cieca. Quindi qual è il processo per verificare che la chiave sia quella giusta?
MC0e

43

Succede quando non si dispone di una chiave pubblica adatta per un repository.

Per risolvere questo problema usa questo comando:

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

che recupera la chiave dal server delle chiavi di Ubuntu. E poi questo:

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

che aggiunge la chiave a apt chiavi attendibili.

La soluzione può essere trovata qui e qui e qui .


4
Se hkp: //keyserver.ubuntu.com non funziona, utilizzare questo pgpkeys.mit.eduserver.
RajaRaviVarma,

1
Questa risposta ha risolto il mio problema con il repository Kylin. Il metodo di input pinogin sogou ha aggiunto la fonte alla mia /etc/apt/sources.list.d/cartella, ma a quanto pare non ha importato la chiave gpg. Buona risposta, semplice e
precisa

1
Grazie! Ha funzionato per me per risolvere il problema del repository php.
Akash Agarwal,

1
Questa risposta ha risolto il mio aggiornamento perhttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw

e del tutto possibile, che non hai generato la chiave per il tuo sistema prima. quindi prima di seguire i passaggi precedenti usa - gpg --gen-key (riferimenti - packaging.ubuntu.com/html/getting-set-up.html )
parasrish

35

Devi ottenere e importare la chiave.

Per ottenere la chiave da un PPA, visitare la pagina Launchpad del PPA. Su ogni pagina PPA su Launchpad troverai questo link (2), dopo aver fatto clic su "Dettagli tecnici su questo PPA" (1):

immagine 1

Seguilo e fai clic sul collegamento ID chiave (3):

immagine 2

Salva la pagina, questo è il tuo file chiave.


Ora è il momento di importarlo:

  • Applications > Software Center,
  • Edit > Software sources...,
  • Inserisci la tua password,
  • Vai alla Authenticationscheda e fai clic su Import Key File..., finalmente
  • Seleziona il file chiave salvato e fai clic su OK.

1
Non perdere tempo, vedi la risposta sotto.
Felipe,

5
@FelipeMicaroniLalli, la domanda era come aggiungere un pubkey usando la GUI, non il terminale, quindi questa risposta era perfetta.
Chris Woods,

Ora è molto più facile e veloce farlo con y-ppa-manager (anche un'applicazione gui). Vedi la mia risposta qui sotto.
monotasker

1
OK, ma cosa succede se il repository non è un ubuntu ppa. Ad esempio, Intel gestisce il proprio repository per i driver hardware video su download.01.org
mc0e

Ottima guida passo passo, grazie mille! veramente utile per qualcuno che non è riuscito ad aggiungere la chiave tramite apt-key.
Roy Ling,

12

apt può gestire solo 40 chiavi in ​​/etc/apt/trusted.gpg.d. 41 chiavi e visualizzerai l'errore GPG "nessuna chiave pubblica trovata" anche se esegui tutti i passaggi per aggiungere le chiavi mancanti.

Controlla se ci sono chiavi inutilizzate in questo file da ppa che non usi più. Se tutti sono in uso, prendere in considerazione la rimozione di alcuni ppa insieme ai corrispondenti file di chiavi in ​​/etc/apt/trusted.gpg.d

Inoltre, usando

sudo apt-key adv

È considerato un rischio per la sicurezza e non è raccomandato in quanto si sta " minando l'intero concetto di sicurezza in quanto questo non è un modo sicuro di ricevere le chiavi per vari motivi (come: hkp è un protocollo in testo semplice, è possibile falsificare keyid brevi e persino lunghi, ... ) ". http://ubuntuforums.org/showthread.php?t=2195579

Credo che sia il modo corretto di aggiungere chiavi mancanti (ad esempio 1ABC2D34EF56GH78)

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -

1
Ho trovato più semplice eliminare tutte le chiavi da /etc/apt/trusted.gpg.d e quindi procedere alla risposta accettata askubuntu.com/a/386003/284664
janot

@mchid Puoi per favore citare un documento / url che parla di questo limite di 41 chiavi?
SebMa

@SebMa Il link è pubblicato nella mia risposta e fa riferimento a un bug in Debian che è stato influenzato da questo limite. Ecco un'ancora al post reale all'interno del link che menziona questo: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 Non sono sicuro che esista una documentazione effettiva su questo, ma il numero 40 potrebbe essere stato usato perché "40 "si traduce in" molto "in molte lingue diverse.
mchid

@SebMa Tuttavia, il limite esiste o esisteva al momento di questa risposta e anche per qualche tempo dopo. Ho sperimentato personalmente questo limite di 41 chiavi e l'ho risolto eliminando le chiavi non utilizzate per aggiungere una nuova chiave quando esistevano già 40 chiavi per evitare questo errore.
mchid


9

C'è un piccolo script impacchettato nel PPA WebUpd8 che collegherò come un singolo download .deb in modo da non dover aggiungere l'intero PPA, che importa automaticamente tutte le chiavi GPG mancanti.

Scarica e installa Launchpad-getkeys (ignora ~ natty nella sua versione, funziona con tutte le versioni di Ubuntu da Karmic fino a Oneiric). Una volta installato, apri un terminale e digita:

sudo launchpad-getkeys

Se sei dietro un proxy, le cose sono un po 'più complicate, quindi vedi questo per maggiori informazioni


1
È davvero il modo in cui lo faccio ora, da quando ho visto questo programma presentato sul tuo sito web. Tuttavia, lo scopo della domanda era sapere come farlo in modo grafico.
Agmenor,

Lo script launchpad-getkeys è ora integrato nel programma Y-PPA-manager. launchpad.net/~webupd8team/+archive/y-ppa-manager
monotasker

5

Ho riscontrato lo stesso problema durante l'installazione di Heroku. Il link qui sotto ha risolto il mio problema -

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

Dopo aver risolto il NO_PUBKEYproblema, il problema riportato di seguito è rimasto

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <release@heroku.com>

Per risolverlo ho eseguito i seguenti comandi nel terminale:

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

Fonte: collegamento per risolverlo


4

Assicurati di aver apt-transport-httpsinstallato:

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

Aggiungi repository:

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 

Installa Skype per Linux:

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

Fonte: https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756


3

Più in generale, il seguente metodo dovrebbe funzionare per ogni repository. Prima di tutto cerca, con l'eventuale aiuto di un motore di ricerca, un testo sul sito Web del fornitore del programma che assomigli a quanto segue:

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

Tale testo viene ad esempio visualizzato su http://deb.opera.com . Copia il passaggio, incollalo in un file vuoto che crei sul desktop. Ciò si traduce nel file chiave.

Quindi continuare con l'importazione della chiave:

  • Applicazioni> Sofware Center
  • Modifica> Sorgenti software ..., inserisci la password
  • Scheda Autenticazione, fare clic su "Importa file chiave ..."
  • Seleziona il file chiave salvato e fai clic su "Ok".

È ora possibile rimuovere il file chiave creato in precedenza.


3

Buono! Ho finalmente trovato la strada!

Ho testato tutti i metodi per correggere l' errore GPG NO_PUBKEY e niente funziona per me.

Ho eliminato l'intero contenuto della cartella /etc/apt/trusted.gpg.d

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

E io uso il metodo Y-PPA-Manager perché sono troppo pigro per creare manualmente tutti i pubkey (troppi): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

esegui sudo apt-get update di nuovo e finalmente tutto funziona alla grande ora! Carri armati!

Fonte basata: post n. 17 su https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540


Questa è stata l'unica cosa che ha funzionato anche per me. Presumibilmente un file di chiavi corrotto da qualche parte?
donnek,

0

Ho avuto lo stesso problema con il client Updater di DynDNS.

Si è scoperto che era appena scaduto le chiavi.

La reinstallazione del software (scaricandone una nuova .debdal sito Web, quindi utilizzando Software Center per reinstallare) ha risolto il problema.

Messaggio di errore per riferimento:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
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.