MyTetra Share
Делитесь знаниями!
Использование git за прокси с аутентификацией
Время создания: 31.05.2016 15:03
Автор: Романов-Кошкин-Захарьин-Голштейн-Готторпский
Текстовые метки: git, proxy, прокси
Раздел: Компьютер - Программирование - Системы контроля версий (VCS) - Git
Запись: xintrea/mytetra_syncro/master/base/14646961929oebxqyfll/text.html на raw.github.com

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

Бинарный протокол git закрыт наглухо, но, теоретически, есть возможность работать через http. Теоретически, потому что если прокси требует аутентификации — то git полностью отказывается с ним работать, по крайней мере под Windows.

Выход — пустить git через локальный прокси, который будет аутентифицироваться на upstream сам. Для этих целей будем использовать небезызвестный privoxy .


* * *


В примере используется допущение, что вы хотите получить доступ к github.com. Доступ будет настроен только к нему, ни к чему больше.

Еще одно допущение — ваш прокси поддерживает базовую (Basic) аутентификацию по http протоколу. Если же включена только NTLM аутентификация, то вместо privoxy потребуется установка cntlm . Этот случай мы не рассматриваем, но там все еще проще.

Шаги:

  1. Ставим себе на машину privoxy. Мой файервол запрещает доступ к privoxy.org, ваш, возможно, тоже. Качаем отсюда
  2. Ставить лучше portable версию, незачем мозолить глаза админам новыми записями в списке установленных программ.
  3. Правим config.txt, добавляем строчку
  4. forward github.com <корпоративный-прокси>:<порт-прокси>

  5. В config.txt добавляем еще строчку
  6. debug 8 # Вывод информации о HTTP заголовках

  7. Запускаем браузер, ставим в качестве прокси localhost:8118
  8. Заходим на github.com, авторизуемся на прокси, выходим из браузера
  9. Ищем в логах privoxy строчку вида
  10. Jun 14 18:05:55.577 000017dc Header: scan: Proxy-Authorization: Basic gzMzAcG06T2lkb387XBsZX3gzMzAc2lkJlZG06T=

    Копируем ваш токен в сухое темное место.

  11. Добавляем в user.action строку:
  12. {+add-header{Proxy-Authorization: Basic gzMzAcG06T2lkb387XBsZX3gzMzAc2lkJlZG06T=}}

    .github.com

    Естественно, заменяем токен на ваш.

  13. Удаляем из config.txt строку
  14. debug 8

  15. С прокси все, осталось малое — настроить git.

git config --global http.proxy http: //localhost:8118/

Пробел только уберите после http:, пришлось добавить, т.к. парсер в ссылку превращает.


Вот и все, теперь git сможет работать через аутентифицирующий прокси. Правда, только по протоколу http.

В качестве бонуса: вы теперь можете вообще забыть о том, что ваш прокси требует ввода пароля, если везде будете пользоваться локальным прокси, а не корпоративным.

Все, что надо сделать — заменить в user.action строку ".github.com" на "/".

Приятных вам коммитов!



Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования