2 votes

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

Sur une machine serveur 12.04, j'ai configuré Apt pour qu'il utilise un proxy pour récupérer ses paquets. A 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 l'on essaie de faire une apt-get update je reçois un message HTTP 407 (authentification du proxy requise).

Un examen plus approfondi du journal de la machine mandataire et un vidage TCP indiquent que le nom d'utilisateur et le mot de passe configurés dans l'URL sont les suivants non transmis . Le nom d'utilisateur et le mot de passe ne parviennent 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 pas de caractères spéciaux.

  • 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 d'autre que le fichier ci-dessus
    • env | grep -i proxy ne renvoie rien

Voici à quoi ressemble le tcpdump d'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 faire pour qu'apt respecte les paramètres utilisateur/mot de passe que j'ai définis dans le fichier de configuration ?

1voto

octoquad Points 435

D'après ce que j'ai compris, 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 original mentionne

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

Je ne suis pas sûr que vous puissiez mettre à jour apt vers la version corrigée dans ce rapport (je ne peux pas dire si elle a été reportée à la 12.04 et aux versions antérieures), mais si ce n'est pas le cas, il existe une solution de contournement que vous pouvez utiliser dans le dernier commentaire de rvolgers :

Au fait, il y avait une solution de contournement qui permettait à l'authentification par proxy de fonctionner avec https dans l'ancienne version, mais malheureusement, cela ne fonctionnera plus une fois que le correctif sera livré (ce qui n'est pas surprenant, puisqu'il abuse sans vergogne du parseur d'URI trop permissif d'apt) :

Acquire::http::proxy " http://username:password@hostname:port " ;

Acquérir::https::proxy " http://username:password@nom d'utilisateur:mot de passe@nom d'hôte:port " ;

(En d'autres termes, dupliquer la partie username:password@ pour le proxy https uniquement).

Encore une fois, je vous recommande de ne pas l'utiliser, car votre configuration apt cessera de fonctionner une fois que ce correctif sera rétroporté.

J'espère que cette solution fonctionnera pour vous (je ne suis pas en mesure de la tester moi-même), et si c'est le cas, n'oubliez pas de l'annuler lors de votre prochaine mise à jour.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X