Использование 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: Прокси установлен неправильно.