web-dev-qa-db-ja.com

Aptプロキシ設定はユーザー名/パスワードを送信していません

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ヘッダーがないことに注意してください。

構成ファイルで定義したユーザー/パスワード設定を尊重するにはどうすればよいですか?

2
Mikey T.K.

これは、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が機能しなくなるため、これを使用しないことをお勧めします。

回避策がうまくいくことを願っています(自分でテストすることはできません)。

1
octoquad