ssh:通过持久 ControlMaster 连接的 ProxyCommand

ssh:通过持久 ControlMaster 连接的 ProxyCommand

我有两台服务器,middle并且remotemiddle用作访问 的代理remote。我已设置 的middlessh 配置,以便它保留remote通过 ControlMaster 的连接,如下所示

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

middle我创建了从到 的持久连接remote。这很方便,因为 上的身份验证remote很复杂。

我想设置我的本地 ssh 配置,以便我可以从 localhost ssh 到remotevia middle重新使用上面创建的连接。我可以用 手动执行此操作ssh -t middle ssh remote,但我无法找到使用 ProxyCommand 选项完成同样操作的方法,这在我想将文件 scp 到 时尤其烦人remote

无效的代理命令包括

  • ssh middle -W remote:22(不重复使用连接)
  • ssh middle -t remote(一直到 shell,这让我的本地 ssh 客户端感到困惑,因为它期望与 sshd 对话,而不是与 shell 对话)

答案1

我认为您误解了 ssh 中的整个 ControlMaster 机制。其理念是,连接在本地系统(即“中间”服务器)上重复使用。因此,本质上,要重复使用连接,您需要在“中间”上调用 ssh 客户端。如下所示:

ssh 中间 “ssh 远程”

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

相关内容