我有一个设置,在其中我们使用堡垒/跳转主机访问远程服务器,并且在执行git clone时遇到问题。
在我的git配置中,我有以下设置:
Host *.remotedomain.org
ProxyCommand ssh -l username jumphost nc %h 22`
LogLevel DEBUG1
Run Code Online (Sandbox Code Playgroud)
LogLevel DEBUG1
Run Code Online (Sandbox Code Playgroud)
所以如果我这样做 ssh remoteDevel.remotedomain.org,它将通过此代理主机路由我,一切都很好。
#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(很好)
当我在本地尝试相同的命令时,出现问题
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
但这似乎永远无法正确登录。不完全确定在这里做什么,但我假设我可能缺少一些简单的东西?
我找到了一种使事情起作用的方法-但是我对这实际上如何帮助事情感到困惑
首先,我创建一个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工作会成功,但是,这是有问题的,因为我必须注释掉第一处创建袜子通道所需的行。
我们正在努力!这就是.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
一切正常!