Настройки прокси 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 перестанет работать, как только это исправление будет перенесено.
Я надеюсь, что обходной путь будет работать для вас (я не могу проверить себя), и если это так, не забудьте отменить это при следующем обновлении.