Windows-клиент GitHub за прокси

Я пытаюсь заставить работать клиент GitHub для Windows. Я нахожусь на корпоративном компьютере Win 7 x64 за корпоративным прокси и брандмауэром. Следуя различным другим публикациям и экспериментируя с несколькими комбинациями переменных среды и переменных конфигурации, я обнаружил, что единственный способ получить клонирование и запустить обновления - это использовать переменную среды HTTPS_PROXY, включая мой полный идентификатор пользователя и пароль корпоративного домена.

Это неприемлемо с точки зрения безопасности. Есть ли другой способ заставить это работать?

Дополнительные примечания:

Следующее сработало:

  • Добавьте переменную среды с именем HTTPS_PROXY со значением http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

Следующее не сработало:

  • Пропуск идентификатора пользователя и пароля от HTTPS_PROXY переменная
  • Использование переменной среды с именем HTTP_PROXY (нет S)
  • Добавление http.proxy переменная в глобальный файл конфигурации (.gitconfig)
  • Добавление https.proxy доступно для глобального конфигурационного файла

Во всех случаях клиент 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

И сопровождается выводом нескольких неудачных попыток аутентификации прокси, все из которых указывают "Учетные данные отсутствуют".

10 ответов

Решение

Добавьте эти записи в ваш файл.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>

Перепробовал все вышеперечисленное - и не удалось, единственное, что мне помогло - это CNTLM - http://cntlm.sourceforge.net/.

Установите его и запустите cntlm -H, затем авторизуйтесь на прокси-сервере corp, отредактируйте файл cntlm.ini с выводом cntlm, перезапустите службу windows. Обновите.gitconfig с помощью:

[https] proxy = localhost:3128
[http] proxy = localhost:3128

Теперь cntlm выполнит всю аутентификацию, и вы сможете использовать GitHub(и Dropbox, кстати) за прокси-сервером corp. По крайней мере, до следующей смены пароля:) (затем снова выполните команду cntlm -H)

Если вы используете GitHub для Windows в корпоративной среде, велика вероятность, что вы находитесь за плохим корпоративным брандмауэром / прокси-сервером. GitHub для Windows пока не имеет параметров прокси в своем графическом интерфейсе для настройки параметров.

Чтобы настроить GitHub для Windows на использование корпоративного прокси-сервера, отредактируйте файл.gitconfig, обычно находящийся в C:\Users\.gitconfig или C:\Documents & Settings\.gitconfig.

Закройте GitHub для Windows; В.gitconfig просто добавьте

[https] proxy = proxy.yourcompany.com:port

Мне удалось заставить GitHub Shell работать с нашим корпоративным прокси. Я запускаю GitHub Shell и выполняю следующую команду:

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

Я бы очень хотел, чтобы графический интерфейс тоже работал. Но я не хочу устанавливать глобальную переменную среды Windows, которая содержит мои корпоративные учетные данные.

Как ни странно, GitHub GUI Client может подключаться к GitHub для аутентификации пользователя, но единственная проблема заключается в клонировании, извлечении и переносе проектов из GitHub и обратно. Похоже, проблема в реализации git. Я смог настроить git для запуска через наш прокси-сервер без указания своих учетных данных в глобальных настройках git, и он запрашивал мои учетные данные при выполнении запросов на получение или отправку. Но это работало только в Git Shell.

Я также столкнулся с этой проблемой и попытался немного покопаться в ней (разобрал клиента).

Кусок кода, который генерирует сообщения журнала, которые мы видим, выглядит следующим образом:

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. Кажется, что сообщение журнала не имеет отношения к тому, что мы настроили в файлах конфигурации или переменных среды.

Вот способ установить прокси в GitHub

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

Здесь, в моем колледже, у нас нет имени пользователя и пароля, поэтому, если ip нашего колледжа - 172.16.10.10, а порт - 8080

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

PS -> Я бы порекомендовал использовать этот метод для установки прокси, так как все станет на свои места, как вы узнаете дальше
Источник

Я не знаю о вашем брандмауэре, но мой кампус использует прокси

ты используешь какой-нибудь мерзавец? РЕДАКТИРОВАТЬ: только что заметил, что вы используете GitHub-клиент для Windows

Я использую Tortoisegit и его очень легко установить прокси. Просто щелкните правой кнопкой мыши в любом месте, tortoisegit> сеть, включите прокси-сервер и установите адрес сервера, имя пользователя и пароль. сделанный

Насколько я помню, черепаха также будет работать из коробки с GitHub.

Для нас решение включало две разные вещи. Во-первых, как описано в ответе Соггера, вам нужно добавить записи в ваш .gitconfig файл, расположенный в %USERPROFILE%,

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

Во-вторых, (и это был для нас недостающий элемент), вам нужно настроить исключение на прокси-сервере, чтобы разрешить неаутентифицированному прокси-трафику *.github.com

В iPrism это выглядит так: введите описание изображения здесь

Проблема не столько в прокси, сколько в аутентификации. Обход требования аутентификации позволяет клонировать необходимое взаимодействие и работать с проектами с помощью настольного клиента GitHub.

Также обратите внимание, что этот подход не требует хранения учетных данных прокси в .gitconfig файл.

Я нашел этот блог полезным. Описывает ntlmaps прокси. Это, вероятно, менее безопасно, но работало гладко. Я не мог заставить работать Cntlm.

Если вам нужно заставить клиента Git или GitHub обходить прокси (использовать прямое соединение), просто установите URI прокси в поле .gitconfigв пустую строку. Вероятно, придется редактировать файл вручную, уговорить git config команда для установки значения директивы конфигурации в пустую строку (пробовал git config --global http.proxy "").

Так что просто добавьте следующие строки в ~/.gitconfig:

      [http]
    proxy = ""
[https]
    proxy = "" 
Другие вопросы по тегам