Доступ к git-репозиторию через ssh за брандмауэром - PullRequest
13 голосов
/ 13 ноября 2009

Я хотел бы получить доступ (клонировать / push / pull) к частному (через ssh) репозиторию git, находясь за корпоративным брандмауэром, который разрешает доступ только через http-прокси. Я написал надежную программу Java (daemon) (на основе библиотеки классов JSCh), которая позволит мне использовать локальную и удаленную переадресацию портов, и я надеюсь использовать это, но у меня болит мозг, когда я пытаюсь представить, как это настроить .

Хранилище git repo (для монетизации фразы) находится по адресу foo.server.com/var/git, поэтому естественная склонность к клонированию, игнорируя fireall, будет:

$ git clone ssh://foo.server.com/var/git/myrepo.git

но брандмауэр заблокирует эту команду. Я склонен попробовать что-то вроде

$ git clone ssh://localhost:8022/var/git/myrepo.git

, где localhost: 8022 перенаправляется на foo.server.com:22

Так стоит ли идти по этому пути? Есть ли более простое решение, которое все еще безопасно? Есть ли подводные камни или ошибки, о которых я должен знать?

Ответы [ 2 ]

29 голосов
/ 24 ноября 2011

Использование socat и .ssh/config, например:

Host=foo.server.com
ProxyCommand=socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd

Вы должны быть в состоянии ssh до foo.server.com и

git clone ssh://foo.server.com/var/git/myrepo.git
Ожидается, что

будет работать.

7 голосов
/ 13 ноября 2009

Можете ли вы запустить нормальный сеанс SSH (из командной строки)? Если это так, git также должен работать.

При использовании ssh git должен выбрать параметры конфигурации в .ssh / config. Если этого недостаточно, вы можете указать переменную среды GIT_SSH на измененную версию ssh (или оболочки сценариев оболочки).

...