2009-11-13 13 views
10

chciałbym dostępu (klon/Push/ciągnącej) prywatny (poprzez ssh) repozytorium git natomiast za firmowym firewallem, który umożliwia dostęp tylko http proxy. Napisałem solidny program Java (demon) (oparty na bibliotece klas JSCh), który pozwoli mi wykorzystać lokalne i zdalne przekazywanie portów i mam nadzieję, że wykorzystam to, ale mój mózg rani, gdy próbuję wyobrazić sobie, jak to ustawić .dostęp do repozytorium git poprzez SSH za firewallem

Zajezdnia git repo (na monety frazę) jest foo.server.com/var/git tak naturalnej skłonności, ignorując fireall, aby skonfigurować klonem byłoby:

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

ale zapora blokuje to polecenie. Jestem skłonny spróbować czegoś podobnego

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

gdzie localhost: 8022 jest przekazywany do foo.server.com:22

Więc jest to ścieżka warto dążyć? Czy istnieje jakieś łatwiejsze rozwiązanie, które jest nadal bezpieczne? Czy są pułapki lub pułapki, o których powinienem wiedzieć?

Odpowiedz

5

można dostać normalną ssh (wiersza poleceń) sesja idzie? Jeśli tak, git powinien również działać.

Kiedy ssh, git powinien odebrać opcje konfiguracyjne w .ssh/config. Jeśli to nie wystarczy, możesz wskazać zmienną środowiskową GIT_SSH w zmodyfikowanej wersji ssh (lub pakunku skryptu powłoki).

+2

Nie. To właśnie sprawia, że ​​jest to tak trudne. Z firewalla zezwala się tylko na http. Są tu hacki konfiguracyjne SSH, których mogę użyć, aby normalne polecenia ssh działały, ale nie sądzę, że pomogą one w poleceniu git. Bardzo chciałbym usłyszeć, że się mylę i wypróbuję to, kiedy zabiorę się do pracy. – pajato0

+0

Zaktualizowałem moją odpowiedź: twoje hacki konfiguracyjne SSH również powinny działać przez git. – Thilo

+0

Właściwie git po prostu wywołuje 'git-upload opakowaniowe /' git-otrzymywać opakowaniowe robiąc sprowadzić/PUSH poprzez SSH (robi coś takiego jak 'ssh git.example.com„git-upload-pack „/project.git ""). Możesz określić, gdzie znaleźć git-upload-pack lub git-receive-pack, używając odpowiednich opcji do git-fetch/git-push. –

22

Korzystanie socat i .ssh/config takiego:

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

Powinieneś móc ssh do foo.server.com i

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

Oczekuje się do pracy.

+2

Fajnie, to jest ostateczne rozwiązanie tego irytującego problemu. Niesamowite! [Mała post o tym] (http://albertgroothedde.com/post/2017-04-fix-ssh-and-git-clone-behind-proxy-on-macos/) – Highmastdon

+0

Dzięki Gregor, rozwiązanie działało! Proksy to taki ból, z którym trzeba sobie poradzić. Każda pomoc jest doceniana! – Anand

Powiązane problemy