Клієнт 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.