Конфигурирование Git в Windows для использования аутентификации прокси-сервера NTLM
Я пытаюсь получить доступ к репозиторию на Github с компьютера под Windows, который находится за прокси-сервером, для которого требуется аутентификация NTLM. Ни SSH, ни протокол git://доступны напрямую, поэтому я пытаюсь выполнить эту работу с HTTPS через прокси.
С помощью прокси-сервера NTLM без пароля? Я смог сделать двоичный код curl
, поставляемый с msysgit, приятным с прокси:
curl -U : --proxy-ntlm --proxy xxx.xxx.xx.xx:8080 https://github.com
Это успешно и возвращает домашнюю страницу Github.
Тем не менее, я нашел статью от февраля 2010 Proxying Git, которая гласит (акцент мой):
К сожалению, похоже, что curl всегда будет использовать обычную аутентификацию с прокси-сервером. Если вашему прокси-серверу требуется что-то еще, возможно, NTLM для сети Windows, тогда у вас есть проблема. Curl используется для обработки всех данных о переносе http, и это поддерживает метод проверки подлинности NTLM, но я не знаю, какой способ передать необходимые параметры для завивки. Git использует завиток через привязку библиотеки, поэтому недостаточно просто заменить исполняемый файл curl на обертку script.
Я знаю о параметре core.gitproxy
в конфигурации Git, но, похоже, применим только к протоколу git://. Аналогично, параметр http.proxy
задает адрес прокси-сервера, но не предоставляет возможности для зависания соответствующих параметров.
Ответы
Ответ 1
Попробуйте Cntlm. Это прокси-сервер, предназначенный для работы между программой, которая не понимает NTLM (например, Git) и прокси-сервер, для которого требуется NTLM. Это делает проверку подлинности NTLM так, что приложение не обязательно.
Я не использовал его, поэтому не знаю, как хорошо он работает.
Ответ 2
Я использовал прокси-сервер 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
Спасибо за @richard-hansen за указание Cntlm. Он предоставляет не-windows-адаптер для прокси-сервера Windows. Очень аккуратный.
Вот точные шаги, которые сработали для меня:
- Загрузите и установите Cntlm для окон.
- Откройте Cntlm.ini(он находится в папке установки.)
- Обновить имя пользователя, домен. Сохраните его.
- Запустите
cntlm -I -M http://google.com
из командной строки.
- Cntlm спросит пароль, который вы будете использовать для прокси-сервера. Дай это. (Скорее всего, это ваш пароль для Windows)
- Cntlm идентифицирует метод аутентификации и генерирует ключ. Возьмите этот результат. (например, NTLMv2 77B9081511704EE852F94227CF48A793)
- Обновите Cntlm.ini с помощью этой информации. (Раскомментируйте соответствующую проверку подлинности и обновите ключ)
- Сохранить и закрыть.
- Теперь вам нужно запустить прокси-сервер Cntlm.
net start cntlm
- Теперь обновите приложение с помощью информации прокси-сервера Cntlm. Для Cntlm это 127.0.0.1:3128 (Эта информация находится в файле ini. Если вы хотите, чтобы это изменило ее там). В случае git
git config --global http.proxy 127.0.0.1:3128
- git теперь должен работать нормально через прокси.
Удачи! Разработайте шаги здесь.
Ответ 4
С mysysgit 1.9.5 (или, возможно, более ранние версии тоже, но непроверенные) вы можете сделать это, не вставляя имя пользователя и пароль в текстовый файл конфигурации на диске.
git клиент, использующий GSSAPI для проверки подлинности NTLM
И это не требует cntlm.