ssh:ProxyCommand通过持久的ControlMaster连接

我有两台服务器, middleremotemiddle用作访问remote的代理。 我已经build立了middlesshconfiguration,以便通过ControlMaster保存到remote连接,如下所示

Host remote ControlMaster auto ControlPath ~/.ssh/%r@%h:%p ControlPersist yes

我创build了一个从middleremote的持久连接。 这很方便,因为remote身份validation很复杂。

我想build立我的本地sshconfiguration,以便我可以从本地SSH通过middle remote重用上面创build的连接 。 我可以手动执行这个ssh -t middle ssh remote ,但是我找不到使用ProxyCommand选项完成同样的事情的一种方法,如果我想把一个文件scp到remote ,这特别烦人。

不起作用的ProxyCommands包括

  • ssh middle -W remote:22 (不重用连接)
  • ssh middle -t remote (一直到一个shell,混淆了我的本地ssh客户端,这是希望与sshd,而不是壳)

我想你误解了ssh中的整个ControlMaster机制。 这个想法是连接在本地系统 – 也就是在“中间”服务器上被重用。 所以,实质上,重用连接,你需要调用“中间”的ssh客户端。 喜欢这个:

ssh中间的“ssh remote”

这将首先连接到“中间”,然后在那里启动一个ssh客户端,将您连接到“远程”。 第二个连接将通过正确的ControlMasterconfiguration重用现有的持久连接。