Клиент GitHub Windows за прокси-сервером
Я пытаюсь заставить клиента GitHub работать с Windows. Я на корпоративном компьютере Win 7 x64 за корпоративным прокси-сервером и брандмауэром. Следуя различным другим сообщениям и экспериментируя с несколькими комбинациями переменных среды и переменных конфигурации, я нашел единственный способ получить клонирование и нажимать обновления для работы, используя переменную среды HTTPS_PROXY, включая полный идентификатор пользователя и пароль для корпоративного домена.
Это неприемлемо с точки зрения безопасности. Есть ли другой способ заставить это работать?
Дополнительные примечания:
Сработало следующее:
- Добавьте переменную среды с именем
HTTPS_PROXY
со значением http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080
Следующая работа не:
- Опускание идентификатора пользователя и пароля из переменной
HTTPS_PROXY
- Использование переменной среды под названием
HTTP_PROXY
(no S
)
- Добавление переменной
http.proxy
в глобальный файл конфигурации (.gitconfig
)
- Добавление
https.proxy
varaible в глобальный файл конфигурации
Во всех случаях клиент GitHub по-прежнему не распознает прокси: Содержимое файла TheLog.txt
всегда отображается при запуске:
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy
И за ним следует вывод нескольких неудачных попыток аутентификации прокси-сервера, все из которых указывают, что "Учетные данные отсутствуют".
Ответы
Ответ 1
Добавьте их в свой файл .gitconfig в свой каталог пользователя (перейдите к% USERPROFILE%):
[http]
proxy = http://<proxy address>:<proxy port>
[https]
proxy = https://<proxy address>:<proxy port>
И если вы не хотите хранить свой пароль в виде открытого текста, я бы использовал локальный прокси-сервер, такой как CNTLM, который позволяет вам направлять весь трафик через него и хранить хэшированные пароли.
В отличие от исходного вопроса, , если вам неважно, находится ли ваш пароль в текстовом формате:
[http]
proxy = http://<username>:<password>@<proxy address>:<proxy port>
[https]
proxy = https://<username>:<password>@<proxy address>:<proxy port>
Ответ 2
Пробовал все, что было выше - и не получилось, единственное, что помогло мне, - CNTLM - http://cntlm.sourceforge.net/.
Установите его и запустите cntlm -H, чем аутентифицируйте прокси-сервер corp, отредактируйте файл cntlm.ini с выходом cntlm, перезапустите службу Windows. Обновить .gitconfig с помощью:
[https] proxy = localhost:3128
[http] proxy = localhost:3128
Теперь cntlm выполнит всю аутентификацию, и вы сможете использовать GitHub (и Dropbox, btw) за прокси-сервером corp. По крайней мере, до следующего смены пароля:) (чем снова cntlm -H)
Ответ 3
Я смог заставить GitHub Shell работать с нашим корпоративным прокси. Я запускаю GitHub Shell и выполняю следующую команду:
export http_proxy=http://<username>:<password>@<corporate proxy>:3128
Я бы очень хотел, чтобы GUI работал тоже. Но я не хочу устанавливать глобальную переменную среды Windows, которая содержит мою корпоративную учетную информацию.
Strangely GitHub GUI Client может подключаться к GitHub для аутентификации пользователей, но проблема связана только с клонированием, вытягиванием и продвижением проектов из GitHub. Похоже, проблема связана с реализацией git. Мне удалось настроить git на прокси-сервер через наш прокси-сервер, не помещая мои учетные данные в глобальные параметры git, и он запрашивал мои учетные данные при выполнении запросов на нажатие или push. Но это работало только в git Shell.
Ответ 4
Если вы используете GitHub для Windows в корпоративном, вероятность того, что вы стоите за большим плохим корпоративным брандмауэром/прокси. GitHub для Windows еще не имеет параметров прокси в своем графическом интерфейсе для настройки параметров.
Чтобы настроить GitHub для Windows на использование корпоративного прокси-сервера, отредактируйте файл .gitconfig, обычно находящийся в папке C:\Users \.gitconfig или C:\Documents and Settings \.gitconfig
Закрыть GitHub для Windows; В .gitconfig просто добавьте
[HTTPS]
proxy = proxy.yourcompany.com:port
Ответ 5
Я также столкнулся с этой проблемой и попытался вникнуть в нее немного (разобрал клиент).
Часть кода, генерирующая сообщения журнала, которые мы видим, выглядит следующим образом:
private static void LogProxyServerConfiguration()
{
WebProxy defaultProxy = WebProxy.GetDefaultProxy();
string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
try
{
if (defaultProxy.Credentials == null)
{
StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
}
else
{
NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
}
}
catch (Exception ex)
{
StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
}
}
Таким образом, этот блок регистрирует только прокси-информацию, установленную в IE. Сообщение журнала, похоже, не влияет на то, что мы установили в конфигурационных файлах или переменных окружения.
Ответ 6
Я не знаю о вашем брандмауэре, но мой университетский городок использует прокси-сервер
Используете ли вы какой-либо git gui? EDIT: только что заметил, что вы используете клиент github для Windows
Я использую tortoisegit и его очень легко установить прокси. Просто щелкните правой кнопкой мыши в любом месте, черепахa > сеть, включите прокси-сервер и задайте адрес сервера, имя пользователя и пароль. сделано
насколько я помню, черепаха также будет работать в готовом виде с github.
Ответ 7
Я нашел этот блог, чтобы быть полезным. Он описывает ntlmaps прокси. Это, вероятно, менее безопасно, но работает плавно. Я не мог заставить cntlm работать.
Ответ 8
Для нас решение включало две разные вещи. Во-первых, как описано в ответе Соггера, вам нужно добавить записи в свой .gitconfig
файл, расположенный в %USERPROFILE%
.
[http]
proxy = http://<proxy address>:<proxy port>
[https]
proxy = https://<proxy address>:<proxy port>
Во-вторых, (и это была недостающая часть для нас), вам нужно настроить исключение на прокси-сервере, чтобы разрешить прокси-трафик не аутентифицированный на *.github.com
В iPrism это выглядит так:
![введите описание изображения здесь]()
Проблема заключается не столько в прокси-сервере, сколько в аутентификации. В обход требования проверки подлинности обеспечивается необходимая коммуникация для клонирования и работы с проектами с использованием настольного клиента GitHub.
Также обратите внимание, что для этого подхода не требуется хранить учетные данные прокси-сервера в файле .gitconfig
.