12.04サーバーマシンで、プロキシを使用してパッケージを取得するように構成されたAptがあります。 /etc/apt.conf.d/80proxy
、次の2行があります。
Acquire::http::Proxy "http://user:password@proxybox:8443/";
Acquire::https::Proxy "http://user:password@proxybox:8443/";
ただし、apt-get update
、HTTP 407を受け取ります(プロキシ認証が必要です)。
プロキシマシンのログをさらに調べ、TCPダンプ、URLで設定されたユーザー名とパスワードが送信されていないであることを示します。ユーザー名とパスワードプロキシマシンに到達しないでください。
このマシンがcurlを実行することでプロキシにアクセスできることを確認しました。
http_proxy='http://user:password@proxybox:8443/' curl google.com
パスワードに特殊文字が含まれていないことを確認しました。
マシンに他のプロキシ設定がないことを確認しました。
grep -ri proxy /etc/profile*
は何も返しませんgrep -ri proxy /etc/apt/*
は上記のファイルのみを返しますenv | grep -i proxy
は何も返しませんCurlの試行によるtcpdumpは次のようになります。
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
そして、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
Proxy-Authorizationヘッダーがないことに注意してください。
構成ファイルで定義したユーザー/パスワード設定を尊重するにはどうすればよいですか?
これは、aptの特定のバージョンの問題です。このバグレポートを見つけました https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1087512 。元の著者の言及
問題は、httpsトランスポートがプロキシ文字列を変形してからcurlに渡し、プロキシ資格情報を削除することです。
そのレポートでaptを修正バージョンにアップグレードできるかどうかはわかりません(12.04以前にバックポートされたかどうかわかりません)が、そうでない場合はrvolgersからの最後のコメントで使用できる回避策がありますこれは:
ちなみに、古いバージョンではhttpsでプロキシ認証を使用できるようにする回避策がありましたが、残念ながら修正がリリースされると壊れます(aptの過度に寛容なURIパーサーを恥知らずに悪用するため、驚くことではありません):
Acquire :: http :: proxy " http:// username:password @ hostname:port ";
Acquire :: https :: proxy " http:// username:password @ username:password @ hostname:port ";
(言い換えると、httpsプロキシのみのusername:password @部分を複製します。)
繰り返しますが、この修正をバックポートすると、apt configが機能しなくなるため、これを使用しないことをお勧めします。
回避策がうまくいくことを願っています(自分でテストすることはできません)。