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.59
Яндекс индекс цитирования