一尘不染

带有双SSH的Git

linux

我有:本地,server1,server2。

我在server2上有Git存储库。但是我无法连接它。我可以使用SSH连接到server1,然后使用SSH连接到server2。

如何使用双SSH将提交推送到server2?可能吗?


阅读 218

收藏
2020-06-07

共1个答案

一尘不染

一种解决方案是在网关主机(服务器1)上准备 SSH隧道 ,并在本地端使用Git(您可能需要使用它.ssh/options来配置端口)。

另一个是纯Git解决方案,可将 ext::
远程帮助程序
与双SSH配合使用(您最好至少在网关上设置基于无密码的基于公钥的身份验证,否则您将必须输入两次密码)。例如:

local ~$ git clone \
   "ext::ssh -t user@server1 ssh server2 %S 'repo'" repo
Cloning into 'repo'...
Checking connectivity... done.

%SGit将在此处将其扩展为适当的服务的全名,git-upload-pack以进行获取和git-receive- pack推送。-t如果登录到内部主机使用交互式身份验证(例如密码),则需要该选项。

请注意,您需要提供要下载的名称或目录,作为git clone命令的最后一个参数(repo在此处)到此处生成的存储库;否则,Git将使用命令(ssh ...)作为名称。

然后,您将能够通过名称“ origin”来获取并推送到存储库。

2020-06-07