295 votes

Utiliser pip derrière un proxy avec CNTLM

J'essaie d'utiliser pip derrière un proxy au travail.

Une des réponses de ce poste a suggéré d'utiliser CNTLM . Je l'ai installé et configuré selon cet autre poste mais en courant cntlm.exe -c cntlm.ini -I -M http://google.com a donné l'erreur Connection to proxy failed, bailing out .

J'ai aussi essayé pip install -–proxy=user:pass@localhost:3128 (le port par défaut de CNTLM) mais cela a soulevé Cannot fetch index base URL http://pypi.python.org/simple/ . Il y a clairement quelque chose qui cloche avec le proxy.

Quelqu'un sait-il comment vérifier de manière plus définitive si CNTLM est bien configuré, ou s'il existe un autre moyen de contourner ce problème ? Je sais qu'il est également possible de définir le paramètre http_proxy comme indiqué dans la description de la variable d'environnement aquí mais je ne suis pas sûr des lettres de créance à mettre. Celles de cntlm.ini ?

2 votes

Vous devez connaître l'adresse IP de votre proxy et le numéro de port et les définir en conséquence dans votre cntlm.ini (ainsi que votre nom d'utilisateur et votre mot de passe pour le proxy si vous en avez un).

2 votes

J'ai écrit un blog sur la façon de configurer et d'utiliser CNTLM. Le post est pour Ubuntu et pour l'installation de Rails, mais je pense que le processus pourrait être le même. Edit : Lire ceci article sur la façon de configurer CNTLM pour Windows, en gros la même chose avec ma version Ubuntu. HTH.

281voto

Sameer Vaidya Points 291

Avec Ubuntu, je n'ai pas réussi à faire fonctionner l'option proxy comme annoncé - la commande suivante l'a fait no travail :

sudo pip --proxy http://web-proxy.mydomain.com install somepackage

Mais l'exportation de la https_proxy (notez que la variable d'environnement https_proxy no http_proxy ) a fait l'affaire :

export https_proxy=http://web-proxy.mydomain.com

entonces

sudo -E pip install somepackage

1 votes

Le paramètre https_proxy fait également l'affaire sous Mac OS X.

4 votes

Même chose ici, --proxy ne fonctionne pas, j'ai dû spécifier à la fois http_proxy ET https_proxy (Debian derrière un pare-feu de corp)

40 votes

Merci d'inclure -E dans le sudo commande, cela me perturbe constamment lorsque je me demande pourquoi les programmes ne voient pas mon ENV.

99voto

k7sleeper Points 113

Sous Windows, n'oubliez pas de définir

SET HTTPS_PROXY=<proxyHost>:<proxyPort>

ce que je devais régler pour

pip install pep8

0 votes

Fonctionne également sur fedora avec 'export http_proxy=<proxy_host>:<port>'.

5 votes

Cela a fonctionné pour moi, mais seulement sous la forme SET HTTPS_PROXY=ht tps://user:pass@addr:port [moins l'espace que j'ai dû ajouter pour empêcher stackoverflow de le déformer] et j'ai dû remplacer les caractères spéciaux de mon mot de passe par des hexadécimales de la forme %nn.

0 votes

Ça a marché pour moi. Avant, je faisais.. : SET HTTPS_PROXY=username:password@<proxyHost>:<proxyPort> et ça ne marchait pas.

77voto

Anne Lagang Points 1203

Pour configurer CNTLM pour Windows, procédez comme suit article . Pour Ubuntu, lisez mon blog post .

Editar:

Fondamentalement, pour utiliser CNTLM sur n'importe quelle plateforme, vous devez configurer votre nom d'utilisateur et votre mot de passe. haché mot de passe, avant d'utiliser http://127.0.0.1:3128 en tant que mandataire de votre mandataire principal.

  1. Modifiez la configuration et ajoutez les informations importantes comme le domaine, le nom d'utilisateur, le mot de passe et le proxy parent.

  2. Générer un mot de passe haché.

    Windows cntlm –c cntlm.ini –H

    Ubuntu/Linux cntlm -v -H -c /etc/cntlm.conf

  3. Supprimez les mots de passe en texte brut de la configuration et remplacez-les par les mots de passe générés.

Pour vérifier si elle fonctionne :

Windows cntlm –M http://www.google.com

Ubuntu/Linux sudo cntlm -M http://www.google.com/

Pour des instructions plus détaillées, voir les liens ci-dessus.

Mise à jour :

Pour être complet, j'ai pu configurer et utiliser CNTLM dans Windows récemment. J'ai rencontré un problème pendant le processus de synchronisation de Kindle pour PC à cause de notre proxy et l'installation et la configuration de CNTLM pour Windows a résolu ce problème pour moi. Se référer à mon article pour plus de détails.

0 votes

Si ce guide ne résout pas votre problème, essayez d'exécuter pip avec l'option de ligne de commande --trusted-host pypi.python.org qui a fait l'affaire pour moi.

1 votes

Je voudrais juste ajouter que je n'ai pas réussi à faire fonctionner cntlm sur Windows ou Mac dans notre environnement d'entreprise, mais l'installation de Fiddler sur une machine Windows et son utilisation comme proxy a résolu le problème.

47voto

djmoch Points 71

Vous pouvez continuer à utiliser pip sur HTTPS en ajoutant le certificat racine de votre société au fichier cacert.pem dans votre dossier site-packages/pip. Configurez ensuite pip pour qu'il utilise votre proxy en ajoutant les lignes suivantes à ~/pip/pip.conf (ou ~ \pip\pip.ini si vous êtes sous Windows) :

[global]
proxy = [user:passwd@]proxy.server:port

C'est tout. Il n'est pas nécessaire d'utiliser des paquets tiers ou de renoncer à HTTPS (bien sûr, votre administrateur réseau peut toujours voir ce que vous faites).

0 votes

Cela a fonctionné pour moi, mais seulement après avoir installé pip manuellement, ce qui signifie que vous ne pouvez pas utiliser get-pip.py au départ.

2 votes

Pour l'emplacement du fichier pip.ini, voir pip.pypa.io/en/latest/user_guide.html#configuration Dans Windows, j'ai trouvé cacert dans " C:\Python34\Lib\site -packages \pip_vendor\requests\cacert.pe m"

2 votes

Cela a fonctionné pour moi mais je n'avais pas de fichier pip.config donc j'ai dû en créer un dans le fichier ~/.pip/pip.conf puis export PIP_CONFIG_FILE=/root/.pip/pip.conf et mon installation a fonctionné ! Merci !

27voto

namit Points 2085

Pour Windows ; définissez votre proxy dans l'invite de commande en tant que
set HTTP_PROXY=domain\username:password@myproxy:myproxyport

exemple :
set http_proxy=IND\namit.kewat:xl123456@192.168.180.150:8880

3 votes

Que faire si le mot de passe comporte des caractères spéciaux tels que ! et @.

1 votes

Échapper aux caractères spéciaux avec la fonction d'échappement de bash : \

0 votes

L'échappement n'a pas fait l'affaire... J'ai les caractères ! et @ dans mon nom d'utilisateur et mon mot de passe proxy... Ni l'utilisation des variables d'environnement ni le paramètre --proxy n'ont fait l'affaire (avec ou sans échappement).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X