如何使用SSH隧道转发git协议?

时间:2012-05-23 00:13:07

标签: git proxy

我知道有很多次问过类似的问题。但我能找到的是关于如何为http或ssh协议设置代理的答案。情况就是这样。出于某种原因,我需要克隆的gitious上的git存储库不允许http或ssh。当我使用" git clone http://gitorious.org/ ...."我得到了#34; ... / refs not found:你在服务器上运行git update-server-info了吗?"错误。如果我使用" git clone ssh://git@gitorious.org/..." ;,我得到了#34;致命:远程端意外挂断了#34;错误。 (可能我应该责怪android" repo"对于这个,因为我可以直接进行git clone,但不能通过" repo sync")。 (以上测试都是在没有防火墙的情况下完成的。)

所以我的问题是如何设置SSH隧道以在防火墙后面使用git协议。具体来说,我需要做" git clone git://gitorious.org/..." (不是ssh://,而不是http://)在防火墙后面。 谢谢!

1 个答案:

答案 0 :(得分:3)

git://协议在端口9418上运行(记录在git-daemon手册页中,或运行git daemon --help)。要通过SSH隧道转发,您可以执行以下操作:

ssh -L 9418:gitorious.org:9418 your.remote.host

连接后,您将克隆一个远程存储库,如下所示:

git clone git://localhost/path/to/repository.git

为了使其正常工作,您显然需要防火墙外的计算机作为ssh命令的目标。