Клієнт Windows GitHub за проксі


93

Я намагаюся налагодити роботу клієнта 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змінної до глобального конфігураційного файлу

У всіх випадках клієнт 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

І слідує висновок декількох невдалих спроб автентифікації проксі-сервера, які вказують на те, що "Повноваження відсутні".


2
Додавання змінної середовища зробило для мене фокус, але це неприйнятне рішення, оскільки воно надає мій домен / пароль будь-якій програмі, що має доступ до змінних середовища.
Fabricio

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbs пояснює, що це викликано графічним інтерфейсом (який правильно використовує проксі-сервер Windows), що викликає msysgit за кулісами для команд git. msysgit використовує libcurl для http-запитів, який не використовує налаштування проксі-сервера Windows. Триває робота з виправлення цього у кількох областях, у тому числі за допомогою libgit2sharp на github.com/libgit2/libgit2sharp .
Ендрю Хілл

Відповіді:


131

Додайте ці записи до файлу '.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>

див. відповідь edufinn, якщо вам потрібна авторизація проти проксі-сервера: proxy = http: // <ім'я користувача>: <пароль> @ <корпоративний проксі-сервер>: <port>
Ян Хоммес,

1
@JanHommes Оригінальне запитання конкретно задавало питання про те, як це зробити, не зберігаючи пароль у відкритому тексті
Соггер

@Sogger Якщо мій пароль містить символ "@", як мені налаштувати пароль, дякую за вашу допомогу.
берегова лінія


4
Якщо ви використовуєте CNTLM, не забудьте вказати проксі 127.0.0.1замість localhost, як було запропоновано. У Windows здається, що localhost вказує спочатку на адресу IPv6, яку CNTLM не слухає. Таким чином, git зачекає до часу очікування (кілька хвилин), перш ніж перейти на адресу IPv4.
Ронан Пейшао

14

Спробував усе вищезазначене - і не вдалося, допомогло мені лише CNTLM - http://cntlm.sourceforge.net/ .

Встановіть його та запустіть cntlm -H, після чого пройдіть автентифікацію в корпоративному проксі, відредагуйте файл cntlm.ini із результатом cntlm, перезапустіть службу Windows. Оновіть .gitconfig за допомогою:

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

Тепер cntlm виконає всю автентифікацію, і ви зможете використовувати GitHub (і Dropbox, до речі) позаду корпоративного проксі. Принаймні до наступної зміни пароля :) (ніж знову робити cntlm -H stuff)


2
Якщо віддалені дії, такі як git clone, fetch або pull, займають дуже багато часу, спробуйте перемкнути .gitconfig на: [https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128
jhamm

перезапустити яку службу Windows?
Мукус

@Mukus cntlm - він працює після встановлення в сервісному режимі, якщо я правильно пам'ятаю.
Антон

Я вніс зміни, перезапустив їх, і вона все ще не працює.
Мукус

8

Я зміг змусити GitHub Shell працювати з нашим корпоративним проксі. Я запускаю оболонку GitHub і виконую наступну команду:

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

Я б дуже хотів, щоб графічний інтерфейс також працював. Але я не хочу встановлювати глобальну змінну середовища Windows, яка містить інформацію про мої корпоративні дані.

Дивно, що клієнт GitHub GUI може підключатися до GitHub для автентифікації користувачів, але проблема полягає лише в клонуванні, витягуванні та проштовхуванні проектів із GitHub та в нього. Здається, проблема в реалізації git. Я зміг налаштувати git для запуску через наш проксі, не вводячи свої облікові дані в глобальні налаштування git, і він запитував мої облікові дані під час виконання запитів на витягування або натискання. Але це працювало лише в Git Shell.


Це тому, що, ймовірно, GitHub автентифікується внутрішньо за допомогою якогось компонента, який витягує інформацію про проксі з ОС, можливо, якесь рішення SingleSignOn, тоді як сам git цього не робить. У мене така сама проблема з SourceTree. Я також виявив, що коли git працює, працює неможливо багато часу, що робить використання SourceTree неможливим.
Ронан Пейшао

Це, ймовірно, тому, що Github намагається використовувати git-порт, який зазвичай фільтрується, оскільки його не є загальним для ІТ-фахівців. Дивіться мою відповідь на альтернативу.
dragon788

7

Якщо ви використовуєте GitHub для Windows у корпоративній мережі, велика ймовірність того, що ви стоїте за поганим корпоративним брандмауером / проксі. GitHub для Windows ще не має параметрів проксі в своєму графічному інтерфейсі для налаштування параметрів.

Щоб налаштувати GitHub для Windows на використання корпоративного проксі-сервера, відредагуйте файл .gitconfig, який зазвичай можна знайти за адресою C: \ Users \ .gitconfig або C: \ Documents & Settings \ .gitconfig

Закрийте GitHub для Windows; У .gitconfig просто додайте

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


4

Я також зіткнувся з цим питанням і спробував також трохи його розібрати (розібрав клієнта).

Шматок коду, який генерує повідомлення журналу, які ми бачимо, такий:

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 . Здається, повідомлення журналу не впливає на те, що ми встановили у файлах конфігурації або змінних середовища.


3

я не знаю про ваш брандмауер, але мій кампус використовує проксі

ти використовуєш який-небудь git gui? EDIT : щойно помітив, що ви використовуєте клієнт github для Windows

я використовую tortoisegit і дуже просто встановити проксі. Просто клацніть правою кнопкою миші в будь-якому місці, tortoisegit> мережа, увімкніть проксі-сервер і встановіть адресу сервера, ім'я користувача та пароль. зроблено

наскільки я пам’ятаю, tortoisegit також буде працювати нестандартно з github.


2

Ось спосіб встановити проксі в 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 -> Я б рекомендував використовувати цей метод для встановлення проксі, оскільки все стане на свої місця, як ви дізнаєтесь далі
Джерело



1

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

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

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

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

В iPrism це виглядає так: введіть тут опис зображення

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

Також зауважте, що для цього підходу не потрібно було зберігати облікові дані проксі у .gitconfigфайлі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.