Клиент 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.