Доступ к репозиторию git через ssh за брандмауэром

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

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

$ 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

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

Ответ 1

Можно ли начать обычную сессию ssh (командной строки)? Если это так, git также должен работать.

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

Ответ 2

Используя socat и a .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
Ожидается, что

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