Использование 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 прокси-аутентификацию. Вся информация, которую я нашел в Интернете, либо игнорирует проблемы с сохранением пароля в открытом тексте в .gitconfig
, либо касается прокси-серверов NTLM.
Я очень счастлив набирать свои данные прокси каждый раз, когда мне нужно подключиться. Лучшее решение, которое я вижу на данный момент, - это написать обертку script, которая будет запрашивать мой пароль и установить это как переменную среды, когда вызывая git
. Является ли это достойным решением и есть ли какие-либо последствия для безопасности для установки переменной среды для одного вызова в script? Предпочтительно, есть ли какие-либо встроенные настройки или существующие инструменты, которые я могу использовать для этого?
Ответы
Ответ 1
Вместо использования параметра git вы также можете использовать переменную среды (которую вы можете установить только для своего сеанса), как описано в этом ответе:
set http_proxy=http://username:[email protected]:port
set https_proxy=http://username:[email protected]:port
set no_proxy=localhost,.my.company
Таким образом, ваша оболочка script могла бы вместо изменения .gitconfig
(и оставив ваш пароль в виде простого текста) задавать переменные среды по запросу только для вашего текущего сеанса.
Ответ 2
так как git 2.8.0
git config --global http.proxy http://[user]@proxyhost:port
git config --global credential.helper wincred
Ответ 3
Ответ VonC не всегда решает проблему. Я не знаю почему, но это может зависеть от прокси-сервера - или, может быть, это какая-то другая проблема alltogether?
Это может помочь заменить протокол git://
репозитория на http://
.
Примечание. Как и в ответе VonC, вам сначала нужно установить переменные среды http(s)_proxy
:
set http_proxy=http://username:[email protected]:port
set https_proxy=http://username:[email protected]:port
Например, стабилизированный клон-мрамор git обычно клонируется так (из мраморная документация):
git clone -b Приложения /15.12 git://anongit.kde.org/marble ~/marble/sources
В windows 'cmd
(при условии, что http_proxy
был установлен), вам может понадобиться вместо http[s]://
:
git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources
Ответ 4
Если вы находитесь за прокси-сервером, выполните следующие действия.
Убедитесь, что порт 9418 исключен из правил брандмауэра. Администратор сети
Отключите прокси-сервер, если он уже установлен:
- git config --global --unset http.proxy
- git config --global --unset https.proxy
Установите правильный прокси:
Общие ошибки:
- 502: URL/IP недоступен из вашей сети.
- 407: аутентификация прокси-сервера отклонена.
- 80: Прокси установлен неправильно.