web-dev-qa-db-fra.com

Les paramètres proxy d'Apt ne transmettent pas le nom d'utilisateur / mot de passe

Sur une machine serveur 12.04, Apt est configuré pour utiliser un proxy pour récupérer ses paquets. À savoir, dans /etc/apt.conf.d/80proxy, j'ai les deux lignes suivantes:

Acquire::http::Proxy "http://user:password@proxybox:8443/";
Acquire::https::Proxy "http://user:password@proxybox:8443/";

Cependant, lorsque j'essaie de faire un apt-get update, je reçois un HTTP 407 (authentification proxy requise).

Un examen plus approfondi du journal sur la machine proxy, ainsi qu'un TCP _ dump, indiquent que le nom d'utilisateur et le mot de passe configurés dans l'URL sont non transmis. Le nom d'utilisateur et le mot de passe n'atteignent jamais la machine proxy.

Dépannage:

  • J'ai vérifié que cette machine peut accéder au proxy en faisant un curl:

    http_proxy='http://user:password@proxybox:8443/' curl google.com

  • J'ai vérifié que mon mot de passe ne contient aucun caractère spécial.

  • J'ai vérifié qu'il n'y a pas d'autres paramètres de proxy sur la machine.

    • grep -ri proxy /etc/profile* ne renvoie rien
    • grep -ri proxy /etc/apt/* ne renvoie rien sauf le fichier ci-dessus
    • env | grep -i proxy ne renvoie rien

Voici à quoi ressemble tcpdump après une tentative avec curl:

CONNECT apt.dockerproject.org:443 HTTP/1.1
Host: apt.dockerproject.org:443
Proxy-Authorization: Basic (redacted)
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Proxy-Connection: Keep-Alive

Et une tentative avec apt-get:

CONNECT apt.dockerproject.org:443 HTTP/1.1
Host: apt.dockerproject.org:443
User-Agent: Debian APT-CURL/1.0 (0.8.16~exp12ubuntu10.24)
Proxy-Connection: Keep-Alive
Cache-Control: max-age=0

Notez l'absence de l'en-tête Proxy-Authorization.

Comment puis-je être en mesure de respecter les paramètres utilisateur/mot de passe que j'ai définis dans le fichier de configuration?

2
Mikey T.K.

D'après ce que j'ai découvert, c'est un problème avec la version spécifique d'apt. J'ai trouvé ce rapport de bogue https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1087512 . L'auteur d'origine mentionne

Le problème est que le transport https modifie la chaîne de proxy avant de la passer à curl et supprime les informations d'identification du proxy.

Je ne sais pas si vous pouvez mettre à niveau apt avec la version corrigée dans ce rapport (je ne peux pas dire s'il a été rétroporté à 12.04 ou une version antérieure), mais si ce n'est pas le cas, vous pouvez utiliser le dernier commentaire de rvolgers. lequel est:

En passant, il existait une solution de contournement qui permettait à l’authentification de proxy de fonctionner avec https dans l’ancienne version, mais malheureusement, cela ne fonctionnera pas une fois le correctif envoyé (ce qui n’est pas surprenant, car il abuse sans vergogne de l’analyseur d’URI trop permissif dans apt):

Acquire :: http :: proxy " http: // nom d'utilisateur: mot de passe @ nom d'hôte: port ";

Acquire :: https :: proxy " http: // nom d'utilisateur: mot de passe @ nom d'utilisateur: mot de passe @ nom d'hôte: port ";

(En d'autres termes, dupliquez le nom d'utilisateur: password @ part pour le proxy https uniquement.)

Encore une fois, je recommande de ne pas utiliser ceci, car votre configuration d’apt ne fonctionnera plus une fois que ce correctif sera rétroporté.

J'espère que le travail à votre place fonctionnera (je ne peux pas me tester moi-même), et si c'est le cas, n'oubliez pas de l'annuler lors de votre prochaine mise à niveau.

1
octoquad