Comment contourner le port hkp sortant bloqué pour les clés apt


35

J'utilise Ubuntu 9.10 et j'ai besoin d'ajouter des dépôts apt. Malheureusement, je reçois des messages comme celui-ci lors de l'exécution 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

Donc, je dois installer les clés pour ces dépôts. Sous 9.10, nous avons maintenant la possibilité de faire ceci:

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

Voir cet article d'aide sur Ubuntu pour plus de détails.

C’est formidable, sauf que je l’utilise sur un poste de travail protégé par un pare-feu qui bloque les connexions sortantes sur pratiquement tous les ports, à l’exception de ceux requis par les secrétaires exécutant Windows et IE.

Le port en question ici est le service hkp, port 11371.

Il semble y avoir des moyens de télécharger manuellement les clés et de les installer sur le trousseau d'apt. Il peut même y avoir un moyen d'utiliser add-apt-repository ou wget ou quelque chose de télécharger une clé à partir d'un autre serveur le rendant disponible sur le port 80.

Cependant, je n'ai pas encore trouvé un ensemble concis d'étapes pour le faire. Ce que je recherche, c'est:

  1. Comment trouver une clé publique pour un apt-paquet (recommandations pour les ressources qui en possèdent, et / ou astuces pour la recherche. Rechercher le hachage de la clé ne semble pas si efficace à ce jour.)
  2. Comment récupérer une clé (peut-on le faire automatiquement en utilisant gpg ou add-apt-repository?)
  3. Comment ajouter une clé au trousseau d'apt

Merci d'avance.

Réponses:


38

Ce problème a été résolu dans la prochaine version Natty d’Ubuntu: https://launchpad.net/ubuntu/natty/+source/software-properties/0.78.1.

Ceux qui utilisent une version antérieure doivent modifier ppa.py:

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

Où il est dit:

keyserver.ubuntu.com

changer à:

hkp://keyserver.ubuntu.com:80

Sauvegardez, quittez, alors vous pouvez y aller, espérons-le.


1
Génial - résolu mon problème!
Fedearne

14
Le 10.10, plutôt que d’éditer ce fichier source, je pourrais simplement appelersudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys KEY_HASH
l0b0

hkp://keyserver.ubuntu.com:80fonctionne également le 10.04.
BD808

1
+1 pour utilisation--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

Voici une solution de contournement que j'ai utilisée:

J'ai ouvert une session sur un serveur Linux du monde libre au-delà de notre pare-feu d'entreprise, et j'ai procédé comme suit:

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

Ensuite, sur mon poste de travail, je l'ai exécuté et ai collé le résultat de la commande ci-dessus (la clé publique) dans le stdin, suivi de control-D:

sudo apt-key add -

Ensuite, j'ai pu courir sudo apt-get updatesans problèmes.

Je pense toujours qu'il doit y avoir un meilleur moyen, idéalement quelque chose que je pourrais utiliser comme script.


"Je me suis connecté à un serveur Linux dans le monde libre" Il est peu probable que l'on puisse le faire si jamais même HKP était bloqué.
gertvdijk

^ peut-être en supposant que vous viviez dans un régime répressif et non dans un département informatique byzantin. Je peux SSH n'importe où quand je suis sur un VPN, mais pas de paquets DNS (et apparemment pas de HKP). C'est exactement ce dont j'avais besoin.
Kingdon

8

J'ai une autre solution de contournement ici qui pourrait être utile si vous ne pouvez pas trouver un autre serveur Linux en dehors de votre réseau en tant que proxy. Il suffit d'envoyer un email à "pgp-public-keys@pgp.mit.edu" comme sujet comme "get 0x1DABDBB4CEC06767". Mais vous ne pouvez probablement toujours pas écrire un script simple pour automatiser cela.


5

Vous pouvez aller sur le site Web du serveur de clés, par exemple http://wwwkeys.eu.pgp.net/ Recherchez la signature de clé (vous devez ajouter 0x à la signature hexadécimale), par exemple 0x1DABDBB4CEC06767.

Cliquez sur le lien que vous souhaitez obtenir et collez le texte dans un fichier sur la machine, c.-à-d.

cat > <filename>

[PASTE]

[Ctrl-C]

ensuite

apt-key add <filename>

CA marchait bien pour moi; il semble que mon proxy de travail bloque beaucoup de ports "non standard".


C'est la seule façon qui a fonctionné pour moi. Mon proxy bloque fortement le protocole hkp, et même si j'utilise le port 80, gpg n'arrive toujours pas à contacter un serveur. De cette façon, j'ai enfin pu ajouter la clé.
Alexander Amelkin

4

J'ai trouvé un moyen judicieux de le faire en une seule commande via le port 80, toujours ouvert au trafic 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
Bonjour et bienvenue sur superutilisateur. Lorsque vous répondez aux questions, veuillez répondre à la question en indiquant la solution dans la réponse elle-même. Il n’ya aucune garantie que le site auquel vous faites référence maintiendra le site et, s’il tombe en panne, votre réponse sera sans valeur.
Mogget

2

Une solution simple est:

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

Le https sécurisé (443 sortant) ne serait pas bloqué par le pare-feu.


1

J'utilise simplement ssh pour transférer le port vers un hôte externe, puis exécutez la apt-add-repocommande.

ssh -fqTnN -D 11371 <user@host>

-1

J'ai eu le même problème avec gpg. La solution de contournement consistant à ajouter le port au nom du serveur a fonctionné en modifiant mon ~/.gnupg/gpg.conffichier. Cependant, je vais quand même demander à notre administrateur système d'ouvrir le port sortant 11371, je n'ai donc pas à m'en inquiéter à nouveau.


Le port? Comment la spécification du port (11371) dans la configuration fonctionne-t-elle autour du pare-feu?
0xC0000022L
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.