通过SSH代理主机发出git clone问题

时间:2015-09-18 14:46:23

标签: git ssh proxy

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

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

本地.ssh / config

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

远程.ssh / config

LogLevel DEBUG1

因此,如果我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

我注意到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(好)

案例2 - 本地代理

当我在本地尝试相同的命令时,事情就会出错

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

但这似乎永远不会正确登录。不完全确定在这里做什么,但我假设它可能是一些我想念的简单的东西?

更新SocksProxy

我找到了让事情有效的方法 - 但我对这实际上如何帮助事情感到困惑

首先,我使用:ssh -D 1080 machine.remotedomain.org

创建一个Socks代理

然后我编辑.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会起作用,但是,这是有问题的,因为我必须在第一个地方注释掉我需要的线来创建我的袜子隧道。

1 个答案:

答案 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 一切正常!!