Acessando um repositório Git via SSH atrás de um firewall
Pergunta
Gostaria de acessar (clone/empurrar/puxar) um repositório GIT privado (via SSH) enquanto está atrás de um firewall corporativo que permite apenas o acesso ao proxy HTTP. Eu escrevi um programa Java (Daemon) robusto (baseado na biblioteca de classes JSCH) que me permitirá aproveitar o encaminhamento local e remoto de portas e espero aproveitar isso, mas meu cérebro dói quando tento imaginar como configurar isso .
O depósito do Git Repo (para cunhar uma frase) está em foo.server.com/var/git, de modo que a inclinação natural, ignorando o Fireall, para configurar um clone seria:
$ git clone ssh://foo.server.com/var/git/myrepo.git
Mas o firewall bloqueará este comando. Estou inclinado a tentar algo como
$ git clone ssh://localhost:8022/var/git/myrepo.git
onde localhost: 8022 é encaminhado para foo.server.com:22
Então, esse caminho vale a pena seguir? Existe alguma solução mais fácil que ainda seja segura? Existem armadilhas ou betchas que eu deveria estar ciente?
Solução
Você pode obter uma sessão normal de SSH (linha de comando)? Nesse caso, o git também deve funcionar.
Ao usar o SSH, o Git deve pegar suas opções de configuração em .ssh/config. Se isso não for suficiente, você pode apontar a variável de ambiente git_ssh em uma versão modificada do ssh (ou wrapper script shell).
Outras dicas
Usando socat
e a .ssh/config
assim:
Host=foo.server.com
ProxyCommand=socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd
Você deve ser capaz de ssh
para foo.server.com
e
git clone ssh://foo.server.com/var/git/myrepo.git
Espera -se que funcione.