Использование Git в Windows, за HTTP-прокси, без сохранения пароля прокси на диске
Я использую Git на Windows, в корпоративной сети, где я нахожусь за HTTP-прокси с обычной аутентификацией. Исходящий SSH не работает, поэтому я должен использовать HTTPS через прокси.
Я знаю, как использовать git config http.proxy
настроить параметры как http://[username]:[password]@[proxy]:[port]
,
Тем не менее, тем более что это общий компьютер, я бы не хотел хранить свой пароль в моем .gitconfig
, Дополнительно меняю .gitconfig
с использованием git config
Команда оставляет мой пароль в моей истории Bash, поэтому, даже если я не забуду очистить мой .gitconfig
в конце сессии я почти наверняка забуду очистить свою историю.
Я пытался установить http.proxy
без пароля, напрасно надеясь, что я получу приглашение, запрашивающее мой пароль, когда я попытаюсь нажать / вытащить, но я получу только 407 Proxy Authentication Required. Вся информация, которую я нашел в Интернете, похоже, игнорирует проблемы с сохранением пароля в виде открытого текста в .gitconfig
или имеет дело с прокси NTLM.
Я очень рад вводить данные прокси-сервера каждый раз, когда мне нужно подключиться - лучшее решение, которое я вижу на данный момент, - это сценарий-обертка, который запрашивает мой пароль и устанавливает его в качестве переменной среды при вызове git
собственно. Это достойное решение, и есть ли какие-либо последствия для безопасности для установки переменной среды для одного вызова в скрипте? Желательно ли какие-либо встроенные настройки или существующие инструменты, которые я могу использовать для этого?
5 ответов
Вместо того, чтобы использовать настройку git, вы также можете использовать переменную окружения (которую вы можете установить только для вашего сеанса), как описано в этом ответе:
set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
set no_proxy=localhost,.my.company
Таким образом, ваш скрипт-обертка может, вместо того, чтобы изменять .gitconfig
(и оставив ваш пароль в виде простого текста) установите переменные среды по требованию, только для вашего текущего сеанса.
Начиная с мерзавца 2.8.0
git config --global http.proxy http://[user]@proxyhost:port
git config --global credential.helper wincred
Ответ VonC не всегда решает проблему. Я не знаю почему, но это может зависеть от прокси-сервера - или, может быть, это совсем другая проблема?
Это может помочь заменить git://
протокол хранилища с http://
,
Примечание. Как и в ответе VonC, вам необходимо настроить http(s)_proxy
Сначала переменные среды:
set http_proxy=http://username:password@proxydomain:port
set https_proxy=http://username:password@proxydomain:port
Например, стабильный мерзавец клона мрамора обычно клонируется следующим образом (из документации по мрамору):
git clone -b Applications / 15.12 git: //anongit.kde.org/marble ~ / marble / sources
В окнах cmd
(при условии, http_proxy
был установлен), возможно, вам придется использовать http[s]://
вместо:
git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources
Я знаю, что это старый пост, но подумал, что должен добавить примечание. В Windows 10 я выполнил указанную выше команду в git bash как «git config --global https.proxy http://[userid]:[passwordWithSpclChars]@url:port»… но поскольку мои учетные данные содержат специальные символы, я затем пришлось отредактировать файл конфигурации C:\USERS<userid>.gitconfig, чтобы URL-адрес кодировал специальные символы в моих учетных данных. Затем я смог продолжить работу с git fetch from origin.
Если вы находитесь за прокси-сервером, следуйте этому.
Убедитесь, что порт 9418 исключен из правил брандмауэра. Обратитесь к сетевому администратору.
Сбросить прокси, если он уже установлен:
- git config --global --unset http.proxy
- git config --global --unset https.proxy
Установите правильный прокси:
- git config --global http.proxy http: // имя пользователя: пароль @ proxydomain: порт
- git config --global https.proxy http: // имя пользователя: пароль @ proxydomain: порт
Распространенные ошибки:
- 502: URL / IP недоступен из вашей сети.
- 407: проверка подлинности прокси запрещена.
- 80: Прокси не был настроен правильно.