views:

422

answers:

1

I would like to access (clone/push/pull) a private (via ssh) git repository while behind a corporate firewall that only allows http proxy access. I have written a robust Java (daemon) program (based on the JSCh class library) that will allow me to leverage local and remote port forwarding and I am hoping to leverage this but my brain hurts when I try to envision how to set this up.

The git repo depot (to coin a phrase) is at foo.server.com/var/git so the natural inclination, ignoring the fireall, to set up a clone would be:

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

but the firewall will block this command. I'm inclined to try something like

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

where localhost:8022 is forwarded to foo.server.com:22

So is this path worth pursuing? Is there any easier solution that is still secure? Are there pitfalls or gotchas I should be aware of?

+3  A: 

Can you get a normal ssh (command-line) session going? If so, git should also work.

When using ssh, git should pick up your configuration options in .ssh/config. If that is not enough, you can point the environment variable GIT_SSH at a modified version of ssh (or shell script wrapper).

Thilo
No. That's what is making this so hard. Only http is allowed through the firewall. There are SSH configuration hacks that I can use to get normal ssh commands to work but I do not believe these will help with the git command. I'd love to hear that I'm wrong and I will try this out when I get to work.
pajato0
Updated my answer: your SSH config hacks should work via git, too.
Thilo
Actually git simply invokes `git-upload-pack` / `git-receive-pack` when doing fetch / push via SSH (it does something like `ssh git.example.com "git-upload-pack '/project.git'"`). You can specify where to find git-upload-pack or git-receive-pack using appropriate options to git-fetch / git-push.
Jakub Narębski
GIT_SSH was the magic that provided the solution.
pajato0