Git://через прокси-сервер

Я за брандмауэром, который блокирует порт 9418 (git), и пытаюсь установить некоторые инструменты, которые явно делают проверку git://github.com/..., поэтому я не могу переключиться на https для проверки.

Так что мне интересно, можно ли перенаправить весь трафик на порт 9418 через прокси-сервер, и если да, то как:)

Ответ 1

Посмотрите core.gitproxy в Git config.

Быстрый поиск в Google показал этот script, который может быть полезен (или не может - я не пробовал): https://gist.github.com/49288 p >

Ответ 2

Если вы говорите о подмодулях git, попробуйте следующее:

git config --global url.https://github.com/.insteadOf git://github.com/

... взято из здесь.

Таким образом, вам не нужно устанавливать прокси-сервер и не запускать никаких script.

Ответ 3

Вы пробовали TCP-туннель на основе ssh? Если у вас есть ssh-сервер, который (а) находится за пределами вашего брандмауэра и (b) разрешает переадресацию IP, вы можете сделать:

ssh -L localhost:9418:<remote>:9418 [email protected]

или, если вам нужно запустить sshd на порт 443, чтобы обойти ваш брандмауэр,

ssh -P 443 -L localhost:9418:<remote-host>:9418 [email protected]

Тогда локально:

git checkout git://localhost/...

Очевидно, что это непрозрачно, и это немного запутанно - нет никаких сомнений в том, что там есть инструменты, которые более конкретно нацелены на проблему. Тем не менее, я обычно использую этот метод, потому что он использует инструменты, которые я должен использовать (ssh и дешевый виртуальный сервер, который я арендую).

(Я никогда не пробовал это с подключением git, но я не вижу причин, почему это не сработает. Я использовал его со многими другими протоколами одного TCP-порта без проблем.)

Ответ 4

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

nc -x <your_proxy_host>:<your_proxy_port> $1 $2

Два параметра, представляющие удаленный хост и порт, будут переданы в прокси-команду git. Если вы назовете это script git-proxy и сделаете его доступным с вашего $PATH, вы можете вызвать git config, чтобы установить его:

git config --global --add core.gitProxy git-proxy