2

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

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

4

1 回答 1

4

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

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

连接后,您将像这样克隆一个远程存储库:

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

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

于 2012-05-23T00:31:48.037 回答