从远程 SSH 仓库克隆 Git - 在执行克隆命令之前更改远程网络上的机器

7

我想从我的公司服务器克隆一个git仓库到我的个人电脑。唯一的外部访问方式是通过ssh登录'machine1'。

ssh user@machine1.company.xy

很遗憾,那台机器上没有安装git。因此像下面这样进行git克隆是不行的:

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

无法工作。我需要切换到另一台名为'machine2'的机器上,在通过'machine1'登录网络后安装git。因此,为了让克隆工作,我需要执行以下命令:

ssh machine2

在实际执行git命令之前,是否有任何方法可以做到这一点?例如像预克隆钩子这样的东西?

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

期待您的提示和建议!

1个回答

13
你可以通过配置ssh代理命令来实现此操作。注意:这假定代理服务器上可用netcat;如果需要,可以将其替换为Perl或其他类似的脚本。

将以下内容添加到您的~/.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代理的情况下,这不是必需的。


这听起来像是一个很好的解决方案。不幸的是,netcat在远程机器上显然不存在。它是运行SunOS 10的sparc架构。我是否可能有其他替代netcat的选择? - Deve
1
唯一的要求是您编写一个简单的程序,将stdin / stdout中继到任意远程主机; 您可以在可用的任何脚本语言中编写一些简单的脚本,或者编译netcat或socat之类的程序并将它们放在您的主目录中。 - bdonlan
好的,我明白你的意思。对我来说似乎是一个挑战,但我会尽力而为。再次感谢! - Deve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接