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

时间:2010-03-28 13:18:48

标签: git ssh portforwarding tunnel

我正在尝试使用ssh端口转发来破坏企业防火墙:

ssh git@GIT_SERVER -L9418:GIT_SERVER:9418

在另一个终端我运行

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

但是我收到以下错误:

  

/Users/aboxer/tmp/glucosia/.git /

中初始化的空Git存储库      

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

谢谢!

4 个答案:

答案 0 :(得分:7)

我很确定你的问题(或至少导致这个特殊错误的问题)在这里:

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

答案 1 :(得分:6)

答案 2 :(得分:0)

Vlad Zloteanu的简短版本答案:

设置隧道:

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

克隆回购

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

答案 3 :(得分:0)

以下是适合我的步骤。我的系统是公司防火墙的后面,它是域名加入:

  • 首先需要安装npm
  • Fiddler也需要处于运行模式。 Fiddler需要在启用“规则”的情况下使用“自动验证”选项运行
  • 通过命令安装Git:

npm install git

  • 将协议从git更新为https:

git config --global url。https://github.com/.insteadOf git://github.com/