我有两台服务器,middle
并且remote
。middle
用作访问 的代理remote
。我已设置 的middle
ssh 配置,以便它保留remote
通过 ControlMaster 的连接,如下所示
Host remote ControlMaster auto ControlPath ~/.ssh/%r@%h:%p ControlPersist yes
middle
我创建了从到 的持久连接remote
。这很方便,因为 上的身份验证remote
很复杂。
我想设置我的本地 ssh 配置,以便我可以从 localhost ssh 到remote
via 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 配置下重用现有的持久连接。