通过SSH代理主机的git clone问题

Jee*_*eef 2 git ssh proxy

我有一个设置,在其中我们使用堡垒/跳转主机访问远程服务器,并且在执行git clone时遇到问题。

在我的git配置中,我有以下设置:

本地.ssh / config

Host *.remotedomain.org
   ProxyCommand ssh -l username jumphost nc %h 22`
   LogLevel DEBUG1
Run Code Online (Sandbox Code Playgroud)

远程.ssh / config

LogLevel DEBUG1
Run Code Online (Sandbox Code Playgroud)

所以如果我这样做 ssh remoteDevel.remotedomain.org,它将通过此​​代理主机路由我,一切都很好。

情况1-远端复制

#Log into remote machine via SSH
ssh remoteDevel

#Clone repo
git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git
Run Code Online (Sandbox Code Playgroud)

我注意到的是SSH调试“东西”打印出了这一行

Initialized empty Git repository in /home/USER/disjockey/.git/
debug1: Executing proxy command: exec /usr/bin/sss_ssh_knownhostsproxy -p 7999 stash.remotedomain.org
Run Code Online (Sandbox Code Playgroud)

在我看来,这就像它成为Atlassian Stash服务器的代理以拉下git repo(很好)

情况2-通过代理本地

当我在本地尝试相同的命令时,出现问题

git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git
Run Code Online (Sandbox Code Playgroud)

首先,我看到它试图通过最跳越

debug1: Executing proxy command: exec ssh -l USERNAME jumphost nc stash.remotedomain.org 22
....
#Lots of junk
....
debug1: Next authentication method: password
git@stash.remotedomain.org's password:
Run Code Online (Sandbox Code Playgroud)

所以?

好吧,显然它没有按我希望的那样工作。据我所知,代理命令可能已关闭,因为它似乎在尝试在stash:22本地运行时代理到在stash:7999远程运行时代理。

我试图将代理命令更改为:

ProxyCommand ssh -l username jumphost nc %h 7999

但这似乎永远无法正确登录。不完全确定在这里做什么,但我假设我可能缺少一些简单的东西?

更新SocksProxy

我找到了一种使事情起作用的方法-但是我对这实际上如何帮助事情感到困惑

首先,我创建一个Socks Proxy: ssh -D 1080 machine.remotedomain.org

然后我编辑我的 .ssh/config

#Host *.remotedomain.org
#   ProxyCommand ssh -l username jumphost nc %h 22`
#   LogLevel DEBUG1

Host stash.remotedomain.org
    User git
    ProxyCommand nc -x localhost:1080 %h %p
Run Code Online (Sandbox Code Playgroud)

然后我的git clone工作会成功,但是,这是有问题的,因为我必须注释掉第一处创建袜子通道所需的行。

Jee*_*eef 5

我们正在努力!这就是.ssh/config成功的秘诀。

远程主机连接到gen1远程网络上的计算机。

连接到: stash.remotedomain.org基本上在远程代理的顶部进行第二个代理,并代理7999git服务器(atlassian stash)正在运行的端口。

Host remote
    HostName gen1
    ProxyCommand ssh -l username jumphost nc %h %p

Host stash.remotedomain.org
    ProxyCommand ssh remote nc stash 7999
Run Code Online (Sandbox Code Playgroud)

因此,当我这样做时: git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git 一切正常!