7

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

ssh user@machine1.company.xy

不幸的是,该特定机器上没有安装 git。所以一个 git clone 像

git clone ssh://user@machine1.company.xy/path/to/repo <local-repo-path>

不会工作。我要做的是在通过“machine1”登录网络后更改为安装了 git 的另一台机器“machine2”。所以要让克隆工作我必须执行一个命令

ssh machine2

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

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

期待您的提示和建议!

4

1 回答 1

13

您可以通过配置 ssh 代理命令来做到这一点。注意:这里假设代理服务器上可以使用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 代理设置不需要这样做。

于 2011-01-22T19:51:23.217 回答