git - 如何使用SSH隧道转发git协议(protocol)?

标签 git proxy

我知道类似的问题已经被问过很多次了。但我能找到的只是有关如何为 http 或 ssh 协议(protocol)设置代理的答案。情况是这样的。由于某种原因,我需要克隆的 gitorious 上的 git 存储库不允许 http 或 ssh。当我使用“git clone http://gitorious.org/ ....”时,我得到“.../refs not find: did you run git update-server-info on the server?”错误。如果我使用“git clone ssh://[email protected]/...”,我收到“致命:远程端意外挂起”错误。 (也许我应该为此责怪android“repo”,因为我可以直接进行git克隆,但不能通过“reposync”)。 (以上测试均在没有防火墙的情况下完成。)

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

最佳答案

git:// 协议(protocol)在端口 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 命令的目标。

关于git - 如何使用SSH隧道转发git协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711812/

相关文章:

git - 如何使用 git log 查看提交(和文件更改)的原始分支?

git - 撤消 Git 中一个文件的工作副本修改?

java - 如何告诉代理服务器不要缓存响应?

heroku - 可以在heroku上创建代理服务器吗?

git checkout git gui 中文件的修订版

git - 用什么代替 git pull

git - 是否有最大数量的 git stashes?

http - Apache 作为 CouchDB 的反向代理

ssl - 如何使 HAProxy 的 SSL 重定向和路径重写(使用 reqrep)同时工作?

android - Android 处理 SSL 的代理服务器