Настройки прокси Apt не передают имя пользователя / пароль

На сервере с 12.04 у меня есть Apt, настроенный на использование прокси для захвата пакетов. Остроумие, в /etc/apt.conf.d/80proxyУ меня есть две следующие строки:

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 ничего не возвращает

Вот как выглядит tcpdump из попытки с 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

И попытка с помощью 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.

Как я могу соблюдать настройки пользователя / пароля, которые я определил в файле конфигурации?

1 ответ

Решение

Из того, что я понял, это проблема конкретной версии apt. Я нашел этот отчет об ошибке https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1087512. Оригинальный автор упоминает

Проблема заключается в том, что транспорт https искажает строку прокси, а затем передает ее в curl и удаляет учетные данные прокси.

Я не уверен, что вы можете обновить apt до фиксированной версии в этом отчете (я не могу сказать, была ли она перенесена на 12.04 и более ранние версии), но если нет, то есть обходной путь, который вы можете использовать в последнем комментарии от rvolgers который:

Между прочим, был обходной путь, который позволял аутентификации прокси работать с https в старой версии, но, к сожалению, это сломается, как только исправление выйдет (неудивительно, поскольку он бессовестно злоупотребляет чрезмерно разрешающим анализатором URI в apt):

Получить:: http:: proxy " http: // имя пользователя: пароль @ имя хоста: порт";

Получить:: https:: прокси " http: // имя пользователя: пароль @ имя пользователя: пароль @ имя хоста: порт";

(Другими словами, дублирование имени пользователя: пароль @ часть только для прокси https.)

Опять же, я рекомендую не использовать это, так как ваша конфигурация apt перестанет работать, как только это исправление будет перенесено.

Я надеюсь, что обходной путь будет работать для вас (я не могу проверить себя), и если это так, не забудьте отменить это при следующем обновлении.

Другие вопросы по тегам