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
Проблема не столько в прокси, сколько в аутентификации. Обход требования аутентификации позволяет клонировать необходимое взаимодействие и работать с проектами с помощью настольного клиента GitHub.
Также обратите внимание, что этот подход не требует хранения учетных данных прокси в .gitconfig
файл.
Если вам нужно заставить клиента Git или GitHub обходить прокси (использовать прямое соединение), просто установите URI прокси в поле
.gitconfig
в пустую строку. Вероятно, придется редактировать файл вручную, уговорить
git config
команда для установки значения директивы конфигурации в пустую строку (пробовал
git config --global http.proxy ""
).
Так что просто добавьте следующие строки в
~/.gitconfig
:
[http]
proxy = ""
[https]
proxy = ""