git://通过代理

git://通过代理,git,proxy,git-config,Git,Proxy,Git Config,我在一个防火墙后面,防火墙正在阻止端口9418(git),我正在尝试安装一些工具,这些工具正在显式地执行git://github.com/...,因此我无法切换到https进行结帐 因此,我想知道是否可以通过代理将所有流量重定向到端口9418,如果可以,如何:)您是否尝试过基于ssh的TCP隧道?如果您的ssh服务器(a)位于防火墙之外,并且(b)允许IP转发,则可以执行以下操作: ssh -L localhost:9418:<remote>:9418 me@remote-ssh-s

我在一个防火墙后面,防火墙正在阻止端口9418(git),我正在尝试安装一些工具,这些工具正在显式地执行
git://github.com/...
,因此我无法切换到https进行结帐


因此,我想知道是否可以通过代理将所有流量重定向到端口9418,如果可以,如何:)

您是否尝试过基于ssh的TCP隧道?如果您的ssh服务器(a)位于防火墙之外,并且(b)允许IP转发,则可以执行以下操作:

ssh -L localhost:9418:<remote>:9418 me@remote-ssh-server
显然,这是不透明的,而且有点复杂——毫无疑问,有一些工具专门针对这个问题。但是,我通常使用这种方法,因为它使用我必须使用的工具(ssh和我租用的廉价虚拟服务器)


(实际上,我从未在git连接上尝试过这一点,但我看不出它不起作用的原因。我在许多其他单TCP端口协议中使用过它,没有问题。)

请查看中的
core.gitproxy
设置


快速谷歌搜索揭示了这个脚本可能有用(也可能不有用-我没有尝试过):

如果您正在谈论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://github.com/...
,所以我不能做这样的代理,因为我不能将URL更改为
localhost
,您可以尝试在/etc/hostsHm中将github.com临时配置为127.0.0.1,这很有趣。提问者是否愿意评论这是否有效,如果有任何不利因素?我实际上也对这些信息感兴趣,正如我说的,我从未尝试过:-)请考虑粘贴该脚本的内容,以防文件被删除。这是一个非常优雅的方法。工作相当顺利,没有涉及任何疯狂的代理胡说八道。我以前只能更改git://URI,但在部署中处理bundler使这成为一场真正的噩梦。您的解决方案神奇地无痛。还可以与ssh配合使用:
git config--global url。ssh://git@github.com/。而不是git://github.com/
如果这个答案是合法的,我会嫁给它。这是有史以来关于堆栈溢出的最好答案!编辑了答案以添加另一种可能性-Github正在使用
git@github.com:
而不是
git://github.com/
现在,您可能需要将命令末尾更改为
git@github.com:
git config --global url.https://github.com/.insteadOf git://github.com/
nc -x <your_proxy_host>:<your_proxy_port> $1 $2
git config --global --add core.gitProxy git-proxy