我想将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命令之前。有没有办法做到这一点?像预克隆钩子之类的东西可能吗?
是否有可能以某种方式将远程存储库打包到文件(补丁?),将该文件复制到本地计算机并从该文件克隆?
期待您的提示和建议!
答案 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代理设置,这不是必需的。