我在阻止端口 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/
...取自这里。
这样,您无需设置任何代理,也无需运行任何脚本。
查看Git configcore.gitproxy
中的设置。
快速谷歌搜索发现这个脚本可能有用(或者可能没有 - 我没有尝试过):https ://gist.github.com/49288
您是否尝试过基于 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 连接到远程服务器。您可以创建一个包含以下内容的脚本作为代理命令:
nc -x <your_proxy_host>:<your_proxy_port> $1 $2
这两个参数,代表远程主机和端口,将通过 git 传递给代理命令。如果您命名此脚本git-proxy
并使其可以从您的中访问$PATH
,您可以调用git config
来设置它:
git config --global --add core.gitProxy git-proxy