You can bypass some firewall limitation with the git:// protocol using a proxy command: GIT_PROXY_COMMAND="gitproxy.sh" git clone git://domain.tld/repo.git The value must point to an executable file (no shell wrapping here), accepting 2 arguments: HOST and PORT. These will be the host:port the git server is listenning on (basically what's in your git:// URL). An example gitproxy(1) script using a jump host over SSH: #!/bin/sh ssh jumphost.domain.tld "nc $1 $2" Put that in your `$PATH`, and use it as GIT_PROXY_COMMAND=gitproxy git clone git://whatever.tld/repo.git Or to set it globally git config --global core.gitProxy gitproxy git config --global core.gitProxy 'none for internal.lan' The latter will use `gitproxy` for all git:// URLs, except when host is "internal.lan". You can use the "for" keyword to use specific commands for specific domains. See git-config(1) for more information.