需要在防火墙后面使用 git:尝试 ssh 隧道

Posted

技术标签:

【中文标题】需要在防火墙后面使用 git:尝试 ssh 隧道【英文标题】:need to use git behind firewall: trying ssh tunneling 【发布时间】:2011-02-01 17:53:04 【问题描述】:

我正在尝试使用 ssh 端口转发来破解公司防火墙:

ssh git@GIT_SERVER -L9418:GIT_SERVER:9418

我在另一个终端运行

git clone git://localhost:repositories/project.git

但我收到以下错误:

在 /Users/aboxer/tmp/glucosia/.git/ 中初始化空的 Git 存储库

致命:无法查找本地主机(端口存储库)(提供节点名或服务名,或未知)

谢谢!

【问题讨论】:

这个更适合serverfault。 @Ikke:事实上,答案(我相信)完全与 git url 语法有关,并且 *** 已经被确立为关于如何使用 git 的问题的地方。跨度> 后来我意识到了。我以为是关于如何设置防火墙的。 【参考方案1】:

我很确定您的问题(或至少是导致此特定错误的问题)在这里:

git clone git://localhost:repositories/project.git

如果您查看 man git push 中的 list of url notations,您会看到相关示例:

git://host.xz[:port]/path/to/repo.git/

使用冒号,您使用“存储库”作为端口名称,而 git(可以理解)在连接到本地主机上的端口存储库时遇到问题!您正在寻找的是:

git://localhost/path/to/repositories/project.git

或许

git://localhost/~user/repositories/project.git

编辑:

我可能从一开始就应该这么说,但我实际上想不出你需要在 git 中使用 SSH 隧道的原因。它的默认传输协议是 ssh; git 协议实际上只存在于允许从没有帐户的情况下获取公共存储库。如果你可以通过 SSH 连接到存储库所在的机器,你可以通过 ssh 获取:

git clone ssh://[user@]host.xz/path/to/repo.git
git clone ssh://[user@]host.xz/~/path/to/repo.git
git clone ssh://[user@]host.xz/~user/path/to/repo.git

【讨论】:

是的,有趣的是,当我不在防火墙后面时,命令 git clone git://GIT_SERVER:repositories/project.git 工作正常,但 git clone git://GIT_SERVER/ repositories/project.git 没有 @Jacko:我认为你的意思是在这里删除冒号没有帮助?另外,你有什么理由不能简单地使用git clone ssh://GIT_SERVER/path/to/repositories/project.git? Git 的默认传输协议是 ssh... 谢谢,杰弗罗米。如您的编辑中所述,通过 ssh 获取工作正常。 传奇,等着它... dary。 ssh 隧道是通过防火墙所必需的,对吧?例如,如果 git repo 位于我无法“正常”访问但只能通过 ssh 访问的服务器上,那么我不需要通过隧道访问该服务器上的 git 吗? (这是我目前遇到的问题。)【参考方案2】:

我在这里写了一个完整的回复/指南:http://vladzloteanu.wordpress.com/2010/12/18/git-through-ssh-port-forwarding-ssh-tunneling/。

【讨论】:

【参考方案3】:

Vlad Zloteanu 回答的简短版本:

设置隧道:

ssh ServerWithSSHAccessAddress -L 2000:GitServerAddress:22 -N , &

克隆仓库

git clone ssh://user@localhost:2000/my_repo.git

【讨论】:

【参考方案4】:

以下是对我有用的步骤。我的系统位于公司防火墙后面,并且已加入域:

需要安装第一个 npm Fiddler 也需要处于运行模式。 Fiddler 需要在启用“规则”下的“自动验证”选项下运行 通过命令安装 Git:

npm 安装 git

将协议从 git 更新为 https:

git config --global url.https://github.com/.insteadOfgit://github.com/

【讨论】:

以上是关于需要在防火墙后面使用 git:尝试 ssh 隧道的主要内容,如果未能解决你的问题,请参考以下文章

如何使用反向 SSH 隧道绕过防火墙和 NAT

SSH 到防火墙后面的服务器

自动杀死损坏的反向 ssh 隧道

eclipse RSE 可以连接到本地端口(ssh 隧道)吗?

无法通过 SSH 隧道克隆 git

通过 JSch 建立 SSH 隧道