Настройка Git в Windows для использования проверки подлинности прокси NTLM - PullRequest
18 голосов
/ 21 февраля 2011

Я пытаюсь получить доступ к хранилищу на Github с компьютера под управлением Windows, который находится за прокси-сервером и требует проверки подлинности NTLM.Ни SSH, ни протокол git: // не доступны напрямую, поэтому я пытаюсь заставить это работать с HTTPS через прокси.

С помощью NTLM прокси без пароля? Iудалось сделать бинарный файл curl, поставляемый с msysgit, с прокси-сервером:

curl -U : --proxy-ntlm --proxy xxx.xxx.xx.xx:8080 https://github.com

Это успешно и возвращает домашнюю страницу Github.

Однако я нашел статьюс февраля 2010 Прокси Git , в котором говорится (выделено мое):

К сожалению, кажется, что curl всегда будет использовать обычную аутентификацию с прокси.Если вашему прокси-серверу нужно что-то еще, например, NTLM для сети Windows, тогда у вас проблема .Curl используется для обработки всех подробностей транспорта http, и он поддерживает метод проверки подлинности NTLM, но я не знаю ни одного способа передачи необходимых параметров для curl.Git использует curl через привязку библиотеки, поэтому не достаточно просто заменить исполняемый файл curl скриптом-оберткой.

Я знаю о параметре core.gitproxy в конфигурации Git, но это появляетсяприменять только к протоколу git: //.Аналогично, опция http.proxy устанавливает адрес прокси, но не предоставляет возможности предоставить соответствующие опции для curl.

Ответы [ 5 ]

15 голосов
/ 25 июля 2011

Попробуйте Cntlm .Это прокси, предназначенный для размещения между программой, которая не понимает NTLM (например, Git), и прокси, который требует NTLM.Он выполняет проверку подлинности NTLM, поэтому приложение не должно.

Я не использовал его, поэтому не знаю, насколько хорошо оно работает.

5 голосов
/ 28 апреля 2014

Я использовал прокси-сервер аутентификации CNTLM (хотя это, скорее всего, также будет работать для ntlmaps), чтобы git мог работать, и добавил прокси http и https как http:// localhost:3218.Git потребовалось бы очень много времени для выполнения каких-либо удаленных действий, таких как получение, извлечение или клонирование.

Исправление для этого состояло в том, чтобы переключиться на использование этого вместо: http:// 127.0.0.1:3218

После того, как это былоизменилось в .gitconfig, теперь работает намного быстрее.

Примечание: уберите пробелы между http: // и 127.0.0.1

Пример:

[http] proxy = http:// 127.0.0.1:3128 [https] proxy = http:// 127.0.0.1:3128

3 голосов
/ 07 марта 2014

Спасибо за @ richard-hansen за указание на Cntlm.Он предоставляет не Windows-адаптер для Windows-прокси.Очень аккуратный.

Вот точные шаги, которые работали для меня:

  1. Загрузите и установите Cntlm для Windows.
  2. Откройте Cntlm.ini (Он находится в папке установки.)
  3. Обновление имени пользователя, домена.Сохраните его.
  4. Запустите cntlm -I -M http://google.com из командной строки.
  5. Cntlm спросит пароль, который вы будете использовать для прокси-сервера.Дай это.(Скорее всего, это ваш пароль Windows)
  6. Cntlm определит метод аутентификации и сгенерирует ключ.Возьми этот результат.(например, NTLMv2 77B9081511704EE852F94227CF48A793)
  7. Обновите Cntlm.ini этой информацией.(Раскомментируйте соответствующую аутентификацию и обновите ключ)
  8. Сохраните и закройте.
  9. Теперь вам нужно запустить прокси-сервер Cntlm.net start cntlm
  10. Теперь обновите приложение с помощью прокси Cntlm.Для Cntlm это 127.0.0.1:3128 (эта информация находится в ini-файле. Если вы хотите изменить ее, измените ее там).В случае git git config --global http.proxy 127.0.0.1:3128
  11. git теперь должен нормально работать через прокси.

Удачи!Сложные шаги здесь .

1 голос
/ 06 апреля 2015

С mysysgit 1.9.5 (или, возможно, более ранними версиями, но не проверенными) вы можете сделать это без встраивания имени пользователя и пароля в простой текстовый файл конфигурации на диске.

клиент git, использующий GSSAPI для аутентификации прокси NTLM

И это не требует cntlm.

0 голосов
/ 11 августа 2018

Опция http.proxy прекрасно работает для NTLM-прокси в Windows, проверьте мой следующий ответ на похожий вопрос:

https://stackoverflow.com/a/10848870/352672

...