git://通过代理

我在阻止端口9418(git)的防火墙后面,并且正在尝试安装一些明确正在执行git://github.com/...结帐的工具,所以我无法切换到https查看。

所以我想知道是否有可能通过代理将所有stream量redirect到端口9418,如果是的话,如何:)

看看Gitconfiguration中的core.gitproxy设置。

快速谷歌search显示这个脚本可能是有用的(或者可能不 – 我没有尝试): https : //gist.github.com/49288

如果你正在谈论git submodules,试试这个:

 git config --global url.https://github.com/.insteadOf git://github.com/ 

从这里带走

这样,您不需要设置任何代理,也不需要运行任何脚本。

你有没有尝试过一个基于SSH的TCP隧道? 如果你有一个ssh服务器(a)在你的防火墙之外,(b)允许IP转发,你可以这样做:

 ssh -L localhost:9418:<remote>:9418 me@remote-ssh-server 

或者,如果您必须在端口443上运行sshd以绕过防火墙,

 ssh -P 443 -L localhost:9418:<remote-host>:9418 me@remote-ssh-server 

然后,在本地:

 git checkout git://localhost/... 

显然这不是透明的,而且有点复杂 – 毫无疑问,这些工具更专门针对这个问题。 但是,我通常使用这种方法,因为它使用了我必须使用的工具(ssh和我租用的廉价虚拟服务器)。

(我从来没有尝试过使用git连接,但我没有看到为什么它不起作用的原因,我已经使用它与许多其他单TCP端口协议没有问题。

您需要将core.gitProxy指向一个代理命令,它将通过SOCKS代理将git连接到远程服务器。 您可以使用以下内容创build一个脚本来充当代理命令:

 nc -x <your_proxy_host>:<your_proxy_port> $1 $2 

代表远程主机和端口的两个参数将通过git传递给代理命令。 如果你把这个脚本命名为git-proxy并且使它可以从$PATH访问,你可以调用git config来设置它:

 git config --global --add core.gitProxy git-proxy