Come aggirare la porta hkp in uscita bloccata per le chiavi apt


35

Sto usando Ubuntu 9.10 e devo aggiungere alcuni repository apt. Sfortunatamente, ricevo messaggi come questo durante l'esecuzione sudo apt-get update:

W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A9BF3BB4E5E17B5
W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1DABDBB4CEC06767

Quindi, ho bisogno di installare le chiavi per questi repository. Sotto 9.10 ora abbiamo la possibilità di fare questo:

sudo add-apt-repository ppa:nvidia-vdpau/ppa

Vedi questo articolo della guida di Ubuntu per i dettagli.

Questo è fantastico, tranne per il fatto che sto eseguendo questo su una workstation dietro un firewall che blocca le connessioni in uscita praticamente a tutte le porte tranne quelle richieste dai segretari che eseguono Windows e IE.

La porta in questione qui è il servizio hkp, porta 11371.

Sembra che ci siano modi per scaricare manualmente le chiavi e installarle sul portachiavi di apt. Potrebbe esserci anche un modo per utilizzare il repository add-apt o wget o qualcosa per scaricare una chiave da un server alternativo rendendola disponibile sulla porta 80.

Tuttavia, non ho ancora trovato una serie concisa di passaggi per farlo. Quello che sto cercando è:

  1. Come trovare una chiave pubblica per un pacchetto apt (consigli per risorse che hanno questi e / o suggerimenti per la ricerca. La ricerca dell'hash della chiave non sembra finora così efficace.)
  2. Come recuperare una chiave (può essere fatto automaticamente usando gpg o repository add-apt?)
  3. Come aggiungere una chiave al portachiavi di apt

Grazie in anticipo.

Risposte:


38

Questo problema è stato risolto nella prossima versione Natty di Ubuntu: https://launchpad.net/ubuntu/natty/+source/software-properties/0.78.1

Chi utilizza una versione precedente deve modificare ppa.py:

sudo gedit /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py

Dove dice:

keyserver.ubuntu.com

cambia in:

hkp://keyserver.ubuntu.com:80

Salva, esci, quindi si spera che tu possa andare.


1
Fantastico - risolto il mio problema!
Fedearne,

14
Il 10.10, invece di modificare questo file sorgente, potrei semplicemente chiamaresudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys KEY_HASH
l0b0

hkp://keyserver.ubuntu.com:80funziona anche su 10.04.
bd808,

1
+1 per l'uso--keyserver hkp://keyserver.ubuntu.com:80
rogeriolino

19
sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://proxy:port --recv-keys KEYID

13

Ecco una soluzione alternativa che ho usato:

Ho effettuato l'accesso a un server Linux nel mondo libero oltre il nostro firewall aziendale, e ho fatto questo:

gpg --keyserver keyserver.ubuntu.com --recv 1DABDBB4CEC06767 && gpg --export --armor 1DABDBB4CEC06767

Quindi sulla mia workstation, ho eseguito questo e incollato l'output dal comando sopra (la chiave pubblica) nello stdin, seguito da control-D:

sudo apt-key add -

Quindi sono stato in grado di correre sudo apt-get updatesenza problemi.

Penso ancora che ci debba essere un modo migliore, idealmente qualcosa che potrei scrivere.


"Ho effettuato l'accesso a un server Linux nel mondo libero" Non è molto probabile che uno sia in grado di farlo nel caso in cui anche hkp sia bloccato.
gertvdijk,

^ forse supponendo che tu stia vivendo in un regime repressivo e non in qualche dipartimento IT bizantino. Posso SSH dove voglio quando sono su una VPN, ma nessun pacchetto DNS (e apparentemente nessun HKP.) Questo è proprio quello di cui avevo bisogno.
Kingdon,

8

Ho un'altra soluzione qui che potrebbe essere utile se non riesci a trovare un altro server Linux fuori dalla tua rete come proxy. Basta inviare un'e-mail a "pgp-public-keys@pgp.mit.edu" come soggetto come "get 0x1DABDBB4CEC06767". Ma probabilmente non puoi ancora scrivere un semplice script per automatizzare questo.


5

È possibile visitare il sito Web del keyserver, ad es. Http://wwwkeys.eu.pgp.net/ Cercare la firma della chiave (è necessario aggiungere 0x alla firma esadecimale) ovvero 0x1DABDBB4CEC06767.

Fare clic sul collegamento che si spera possa ottenere e incollare il testo in un file sulla macchina, ad es

cat > <filename>

[PASTE]

[Ctrl-C]

Poi

apt-key add <filename>

Questo ha funzionato bene per me; sembra che il mio proxy di lavoro blocchi molte porte "non standard".


Questo è l'unico modo che ha funzionato per me. Il mio proxy sta bloccando pesantemente il protocollo hkp e anche se uso la porta 80, gpg scade ancora contattando un server. In questo modo sono stato finalmente in grado di aggiungere la chiave.
Alexander Amelkin,

4

Ho trovato un modo pulito di farlo in un solo comando attraverso la porta 80 che è sempre aperta al traffico www.

http://gurrier.wordpress.com/2010/10/02/downlolading-repo-keys-from-behind-a-corporate-firewall/


2
apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys ...
vorburger

1
Ciao e benvenuto su superutente. Quando si risponde alle domande, si prega di rispondere alla domanda con la soluzione nella risposta stessa. Non vi è alcuna garanzia che il sito a cui si fa riferimento manterrà il sito attivo e se scende, quindi la risposta sarà inutile.
Mogget

2

Una soluzione semplice è:

sudo add-apt-repository --keyserver hkps://keyserver.ubuntu.com:443 some_ppa

L'https sicuro (443 in uscita) non verrebbe bloccato dal firewall.


1

Uso semplicemente ssh per inoltrare la porta a un host esterno, quindi eseguo il apt-add-repocomando.

ssh -fqTnN -D 11371 <user@host>

-1

Ho avuto lo stesso problema con gpg. La soluzione alternativa con l'aggiunta della porta al nome del server ha funzionato modificando il mio ~/.gnupg/gpg.conffile. Tuttavia, chiederò ancora al nostro amministratore di sistema di aprire la porta in uscita 11371, quindi non devo preoccuparmi di questo.


Il porto? Come funziona la specifica della porta (11371) nella configurazione attorno al firewall?
0xC0000022L
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.