来自远程ssh存储库的Git克隆 - 在执行clone命令之前更改远程网络上的计算机

时间:2011-01-22 19:16:13

标签: git proxy ssh git-clone

我想将git存储库从我公司的服务器克隆到我的个人计算机。从“外部”访问这些服务器的唯一方法是将每个ssh登录到“machine1”

ssh user@machine1.company.xy

不幸的是,git没有安装在那台特定的机器上。所以像

这样的git克隆
git clone ssh://user@machine1.company.xy/path/to/repo <local-repo-path>

不起作用。我需要做的是在通过'machine1'登录网络后更改到安装了git的另一台机器'machine2'。因此,要使克隆工作,我必须执行像

这样的命令
ssh machine2

在实际执行git命令之前。有没有办法做到这一点?像预克隆钩子之类的东西可能吗?

是否有可能以某种方式将远程存储库打包到文件(补丁?),将该文件复制到本地计算机并从该文件克隆?

期待您的提示和建议!

1 个答案:

答案 0 :(得分:13)

您可以通过配置ssh proxy命令来执行此操作。注意:这假设代理服务器上有netcat;您可以使用perl中的类似脚本替换netcat或其他任何需要的脚本。

将以下内容添加到~/.ssh/config,并根据需要进行创建:

Host machine1
User yourusername
HostName machine1.yourcompany.com

Host machine2
User yourusername
ProxyCommand ssh machine1 nc %h %p
HostName machine2.internal.network

现在你可以ssh machine2它将自动穿过machine1。这意味着使用git就像git clone ssh://machine2/path一样简单。

还可以使用git bundle命令将存储库捆绑到单个文件中。但是,通过正确的ssh代理设置,这不是必需的。

相关问题