2009-11-13 38 views
10

Ich möchte auf ein privates (via ssh) Git-Repository zugreifen (klonen/push/pull), während hinter einer Unternehmens-Firewall nur der HTTP-Proxy-Zugriff erlaubt ist. Ich habe ein robustes Java (Daemon) -Programm geschrieben (basierend auf der JSCh-Klassenbibliothek), das es mir ermöglicht, die lokale und entfernte Portweiterleitung zu nutzen, und ich hoffe, dies zu nutzen, aber mein Gehirn tut weh, wenn ich mir überlege, wie ich das einrichten soll .Zugriff auf ein Git-Repository über ssh hinter einer Firewall

GIT repo Depot (ein Begriff Münze) bei foo.server.com/var/git so die natürliche Neigung, die Fireall ignorieren, wäre ein Klon einzurichten:

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

aber Die Firewall wird diesen Befehl blockieren. Ich bin geneigt, so etwas wie

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

, um zu versuchen, wo localhost: 8022 Also foo.server.com:22

weitergeleitet wird, ist dieser Weg erstrebenswert? Gibt es eine einfachere Lösung, die noch sicher ist? Gibt es Fallstricke oder Fallstricke, die mir bewusst sein sollten?

Antwort

5

Können Sie eine normale ssh (Befehlszeilen) -Sitzung gehen? Wenn ja, sollte Git auch funktionieren.

Wenn Sie ssh verwenden, sollte git Ihre Konfigurationsoptionen in .ssh/config abrufen. Wenn das nicht genug ist, können Sie die Umgebungsvariable GIT_SSH auf eine geänderte Version von SSH (oder Shell-Skript-Wrapper) zeigen.

+2

Nein. Das macht es so schwer. Nur HTTP ist durch die Firewall erlaubt. Es gibt SSH-Konfigurations-Hacks, die ich verwenden kann, um normale SSH-Befehle zu erhalten, aber ich glaube nicht, dass diese mit dem git-Befehl helfen werden. Ich würde gerne hören, dass ich falsch liege und das werde ich ausprobieren, wenn ich zur Arbeit komme. – pajato0

+0

Meine Antwort wurde aktualisiert: Ihre SSH-Konfigurations-Hacks sollten auch über Git funktionieren. – Thilo

+0

Eigentlich ruft git einfach 'git-upload-pack' /' git-receive-pack' auf, wenn man fetch/push über SSH macht (es tut so etwas wie 'ssh git.example.com" git-upload-pack '/project.git) "" '). Sie können angeben, wo git-upload-pack oder git-receive-pack mit den entsprechenden Optionen für git-fetch/git-push zu finden ist. –

22

socat Verwendung und .ssh/config wie folgt aus:

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

Sie sollten arbeiten, um ssh-foo.server.com und

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

wird voraussichtlich in der Lage sein.

+2

Schön, das ist die endgültige Lösung für dieses lästige Problem. Genial! [Kleiner Beitrag dazu] (http://albertgroothedde.com/post/2017-04-fix-ssh-and-git-clone-behind-proxy-on-macos/) – Highmastdon

+0

Danke Gregor, deine Lösung hat funktioniert! Proxies sind so ein Schmerz, mit denen umzugehen ist. Jede Hilfe wird geschätzt! – Anand

Verwandte Themen