我身处一个防火墙后面,防火墙阻止了9418端口(git)的访问。我想安装一些工具,这些工具要求使用git://github.com/...
进行代码检出,因此我不能切换到https来完成检出。
因此,我想知道是否可以通过代理将所有流量重定向到9418端口,如果可以,应该怎么做 :)
我身处一个防火墙后面,防火墙阻止了9418端口(git)的访问。我想安装一些工具,这些工具要求使用git://github.com/...
进行代码检出,因此我不能切换到https来完成检出。
因此,我想知道是否可以通过代理将所有流量重定向到9418端口,如果可以,应该怎么做 :)
如果你是在谈论 Git 子模块,可以尝试以下方法:
git config --global url.https://github.com/.insteadOf git://github.com/
这种方法不需要设置代理或运行任何脚本。
取自这里。
core.gitProxy
设置为代理命令,以便通过SOCKS代理将git连接到远程服务器。您可以创建一个包含以下内容的脚本作为代理命令:nc -x <your_proxy_host>:<your_proxy_port> $1 $2
两个参数分别表示远程主机和端口,将由git传递到代理命令中。如果您将此脚本命名为 git-proxy
并使其可以从您的 $PATH
中访问,您可以调用 git config
来设置它:
git config --global --add core.gitProxy git-proxy
您尝试过使用基于ssh的TCP隧道吗?如果您有一个(a)位于防火墙外部且(b)允许IP转发的ssh服务器,则可以执行以下操作:
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端口协议中使用它而没有问题。)
git clone git://github.com/...
,因此我无法像那样使用代理,因为我无法将URL更改为 localhost
。 - user578895
git config --global url.ssh://git@github.com/.insteadOf git://github.com/
- Lol4t0layman
来进行叠加! - Mr. Taogit@github.com:
而不是git://github.com/
作为SSH URL的开头,因此您可能需要更改命令的结尾为git@ github.com:
。 - LightCC