我有一个设置,我们使用堡垒/跳转主机访问远程服务器,我在使用git clone时遇到问题。
在我的git配置中,我有以下设置:
Host *.remotedomain.org
ProxyCommand ssh -l username jumphost nc %h 22`
LogLevel DEBUG1
LogLevel DEBUG1
因此,如果我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
我注意到SSH调试“stuff”打印出这一行
Initialized empty Git repository in /home/USER/disjockey/.git/
debug1: Executing proxy command: exec /usr/bin/sss_ssh_knownhostsproxy -p 7999 stash.remotedomain.org
这对我来说就像在代理Atlassian Stash服务器来下载git repo(好)
当我在本地尝试相同的命令时,事情就会出错
git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git
首先我看到它试图通过最跳跃的
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:
stash:22
,当我远程运行它时,它会stash:7999
代理。
我尝试将我的代理命令更改为:
ProxyCommand ssh -l username jumphost nc %h 7999
但这似乎永远不会正确登录。不完全确定在这里做什么,但我假设它可能是一些我想念的简单的东西?
我找到了让事情有效的方法 - 但我对这实际上如何帮助事情感到困惑
首先,我使用: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
然后我的git clone
会起作用,但是,这是有问题的,因为我必须在第一个地方注释掉我需要的线来创建我的袜子隧道。
答案 0 :(得分:4)
我们让事情有效!这是诀窍的.ssh/config
。
主机远程连接到远程网络上的计算机gen1
。
正在连接到: stash.remotedomain.org 基本上会在远程之上建立第二个代理,并代理到端口7999
,这就是git server(atlassian stash)正在运行。
Host remote
HostName gen1
ProxyCommand ssh -l username jumphost nc %h %p
Host stash.remotedomain.org
ProxyCommand ssh remote nc stash 7999
所以当我这样做时:git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git
一切正常!!