
Voici quelques petites astuces pour accéder à internet via un terminal sous Linux.
Il vous est peut-être déjà arrivé de vouloir faire un wget, lancer une commande svn ou hg derrière un proxy avec authentification, voici des méthodes pour accéder à internet sur ce type d’architecture.
La première est de déclarer une variable d’environnement $http_proxy :
Pour cela il faut taper la commande :
export http_proxy="http://login:password@serveur_proxy:3128"
Pour éviter de le taper cette commande tout le temps, vous pouvez soit le mettre dans /etc/profile soit dans le .bashrc ou ailleurs d’ailleurs.
Personnellement je le met dans le .bashrc ce qui me permet de le gérer par utilisateur, libre à vous de le mettre où bon vous semble…
Voici la deuxième astuce est de configurer wget :
Configurer wget pour utiliser le proxy avec authentification, pour cela éditer le fichier /etc/wgetrc
Ajouter :
http_proxy = http://hostname.proxy:port/ use_proxy = on proxy-user = username proxy-password = password
Attention, cela ne configurera que le proxy pour le wget, mais je pense que vous l’aviez compris ![]()
Personnellement avec les 2 première méthodes je rencontrais toujours un problème d’authentification, voici le message d’erreur que j’avais par exemple avec un wget :
root@desktop:~# wget -v www.google.fr --2009-11-06 09:46:47-- http://www.google.fr/ Résolution de proxy.mon-reseau.com... 10.0.1.1 Connexion vers proxy.mon-reseau.com|10.0.1.1|:8080... connecté. requête Proxy transmise, en attente de la réponse... 407 Proxy Authentication Required 2009-11-06 09:46:47 ERREUR 407: Proxy Authentication Required.
Ces 2 astuces ne fonctionnent malheureusement tout le temps, notamment lorsque votre proxy requiert une authentification NTLM
Voici le détail de mon wget où vous pourrez voir quel type d’authentification est demandé :
root@pydubreucq-desktop:~# wget -d -v www.google.fr Setting --verbose (verbose) to 1 DEBUG output created by Wget 1.11.4 on linux-gnu. --2009-11-06 09:46:51-- http://www.google.fr/ Résolution de proxy.mon-reseau.com... 10.0.1.1 Caching proxy.mon-reseau.com => 10.0.1.1 Connexion vers proxy.mon-reseau.com|10.0.1.1|:8080... connecté. Created socket 3. Releasing 0x0881b150 (new refcount 1). ---request begin--- GET http://www.google.fr/ HTTP/1.0 User-Agent: Wget/1.11.4 Accept: */* Host: www.google.fr Proxy-Authorization: Basic MjAwMDIyNTc6Ikwzck95X01lUmwxIg== ---request end--- requête Proxy transmise, en attente de la réponse... ---response begin--- HTTP/1.0 407 Proxy Authentication Required Server: squid/2.x.STABLEx Date: Fri, 06 Nov 2009 08:44:47 GMT Content-Type: text/html Content-Length: 1332 Expires: Fri, 06 Nov 2009 08:44:47 GMT X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0 Proxy-Authenticate: NTLM X-Cache: MISS from proxy.mon-reseau.com Via: 1.0 proxy.mon-reseau.com:8080 (squid/2.x.STABLEx) Proxy-Connection: close ---response end--- 407 Proxy Authentication Required Closed fd 3 2009-11-06 09:46:51 ERREUR 407: Proxy Authentication Required.
On peut voir la ligne Proxy-Authenticate: NTLM ce qui signifie que le type d’authentification est NTLM
Voici la troisième astuce qui va vous permettre de régler le problème d’authentification NTLM que l’on retrouve notamment avec des proxy ISA Server :
Il faut installer le paquet ntlmaps
aptitude install ntlmaps
Lors de l’installation, il vous demande le port d’écoute du serveur ntlmaps, le hostname du serveur parent (le proxy) et son port, le domaine Windows, le nom d’utilisateur, le mot de passe…
Bref, je préfère toujours aller voir dans les fichiers de configurations, donc pour le faire à la main, il faut éditer le fichier /etc/ntlmaps/server.cfg
LISTEN_PORT: 8081 PARENT_PROXY: proxy.mon-reseau.com PARENT_PROXY_PORT: 8080 NT_DOMAIN: DOMAINE_WINDOWS USER: username PASSWORD: password
Vous pouvez remarquer le paramètre LISTEN_PORT qui est le port qui va être utilisé pour que vous puissiez accéder à NTLM-APS
Pour cela il faut déclarer la variable d’environnement $http_proxy comme cité ci-dessus :
export http_proxy="http://localhost:8081"
Cette fois-ci, on indique à son système de faire pointer le proxy sur le localhost sur le port 8081 qui est en fait NTLM-APS et qui lui se chargera de l’authentification.
Il suffit ensuite de démarrer NTLM-APS
sudo /etc/init.d/ntlmaps start
Et voilà, vous allez désormais pouvoir accéder via votre terminal à internet en passant par le proxy
Le truc génial avec ce système, qui est petit plus non négligeable à mon sens, est au niveau de l’authentification avec Firefox…
Je m’explique, j’utilise Firefox et je suis un grand adepte des onglets… J’en ai en moyenne 3 à 4 lignes, ce qui représente 40 à 50 onglets, actuellement j’en ai 61 ![]()
Et à chaque démarrage de Firefox, il me demandait de valider mon compte proxy pour accéder aux éléments, vous pouvez imaginer que le matin en allumant le PC, je commencais par effectuée une centaine de clic… Ce qui, même si ça muscle le doigt devient vite lourd…
Et bien avec NTLM-APS ce problème est résolu étant donné que c’est lui qui gère l’authentification ![]()
A noter, par contre que j’ai rencontré un problème d’affichage avec gmail, via NTLM-APS… Je ne sais pas pourquoi, mais ma mise en page était éronnée…
Pour solutionner ce problème, j’ai forcé gmail a fonctionner en https, ce qui au final est mieux ![]()
Je n’ai pas encore rencontré de problème avec d’autres sites, je ne sais vraiment pas pourquoi cela ne fonctionnait pas…
NTLM-APS couvre un peu le même périmètre que CNTLM dont j’avais parlé sur mon article pour utiliser Drupal derrière un proxy
Liens utiles :
Edit : Si vous souhaitez installer des paquets pear / pecl vous pouvez lancer cette commande pour configurer pear/pecl à utiliser votre proxy local ntlmaps :
pear config-set http_proxy http://login:password@ip_du_proxy:port_du_proxy
Soit dans notre exemple :
pear config-set http_proxy http://localhost:8081
Articles Relatifs :
- Howto : Drupal derrière un proxy avec authentification
- Tunnel SSH, port forwarding
- Installation, configuration et test de Raindrop sous Linux – Ubuntu 9.10
- Siege – outils de benchmark web – Nouvelle version
- Réaliser des tests de performances de site web avec Tsung






Si tu utilises ntlmaps l’export de ta variable $http_proxy devrait être localhost:5865 pour l’utiliser.
Il ne faut pas non plus oublier les variables $https_proxy et $ftp_proxy
http://www.bordel-de-nerd.net/2009/11/linux-et-proxy-avec-authentification-ntlm/#content
ntlmaps est aussi très utile en environnement Windows pour par exemple faire passer un flux SSH (via putty) à travers les proxy NTLM.
Bref du tunneling, mais c’est un autre sujet…
Bien le bonjour,
Je ne savais pas 
@jlaunay J’ai paramétré ntlmaps pour fonctionner sur le 8081, donc l’export est valable
@VoidAndAny merci pour l’info
Bonne journée
Merci pour cet article.
Une solution quand le proxy est configuré avec un proxypac?
Alors là, je n’en ai aucune idée…
As-tu les paramètres ?
Oui et non. En fait c’est un fichier qui définit un proxy en fonction du site cible, et en plus ce fichier change régulièrement. Actuellement je mets mes variables d’environnement à jour à la main… et c’est un peu lourd.
Ah ouai…
Alors là, je ne sais quoi te dire, en effet ça dois être très lourd, je compatis…
Merci
Je crois que je vais finir par faire un tunnel SSH vers une machine chez moi et l’utiliser en tant que proxy local.
Et si nos scripts utilisent cron, ça marche aussi : http_proxy=http://cache:3030 en première ligne du crontab :þ
@djib: Ça risque de pas bien marcher, ssh si ton proxy n’est pas déjà bien mis. À mon avis, fais un script qui parse ton proxypac et met les bonnes variables à l’ouverture de session. Par contre, tu risques de faire un peu ramer le démarrage de shell si tu fais un wget à chaque fois, donc je te conseille de « mettre en cache » ce proxypac dans /tmp/ et de parser ça. Et tu cales une tache cron qui le met à jour régulièrement.
article génial, merci !!!
Merci bien
Hello
J’ai suivi ton tutorial mais j’obtiens toujours une erreur d’authentification:
wget -d -v http://www.google.fr
Setting --verbose (verbose) to 1
DEBUG output created by Wget 1.12 on linux-gnu.
--2011-02-23 16:45:14-- http://www.google.fr/
Résolution de localhost... ::1, 127.0.0.1
Caching localhost => ::1 127.0.0.1
Connexion vers localhost|::1|:8081... Closed fd 3
échec: Connexion refusée.
Connexion vers localhost|127.0.0.1|:8081... connecté.
Created socket 3.
Releasing 0x08f7c458 (new refcount 1).
---request begin---
GET http://www.google.fr/ HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: http://www.google.fr
---request end---
requête Proxy transmise, en attente de la réponse...
---response begin---
HTTP/1.0 407 Proxy Authentication Required
Server: squid/2.6.STABLE21
Date: Wed, 23 Feb 2011 15:45:26 GMT
Content-Type: text/html
Content-Length: 1244
Expires: Wed, 23 Feb 2011 15:45:26 GMT
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Proxy-Authenticate: Digest realm=, nonce=
, qop="auth", stale=falseX-Cache: MISS from proxy
Proxy-Connection: close
---response end---
407 Proxy Authentication Required
Closed fd 3
2011-02-23 16:45:14 ERREUR 407: Proxy Authentication Required.
Bien le bonjour,
Tu utilises quelle méthode ? La 1,2 ou 3 ?
Car la 2 et la 3 parle d’authentification NTLM, hors tu utilises un proxy Squid qui ne fait pas d’authentification type NTLM.
La méthode 1 devrait fonctionner…
Déjà, vu ce message d’erreur :
Connexion vers localhost|::1|:8081… Closed fd 3
échec: Connexion refusée.
Il semblerait que la connexion à ton proxy local échoue…
Est-ce que ton service est bien lancé ?
Désolé pour le temps de réponse en tout cas.
Bonne soirée