SSH 配置不优先考虑较早的节

SSH 配置不优先考虑较早的节

我有一个 ssh 配置文件,内容如下:

(a bunch of specific entries)

Host appserver.*.*.foo.in
ControlMaster no

Host *
ForwardAgent yes
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 300

不幸的是,如果我尝试通过类似

ssh [email protected] -p 2222

我收到一条关于控制路径太长的错误。这很令人困惑,因为我故意禁用了 ControlMaster,以避免在配置文件中更具体的 ssh 节中出现该问题。

为什么这个配置设置被忽略?

答案1

ControlMaster控制ssh实例是否为控件掌握,而不是它是否使用控制功能。ssh_config 手册页其中部分内容如下:

控制大师
...设置为“yes”时,ssh(1) 将使用 ControlPath 参数监听指定的控制套接字上的连接。其他会话可以使用相同的 ControlPath 连接到此套接字,并将 ControlMaster 设置为“no”(默认值)。这些会话将尝试重用主实例的网络连接,而不是启动新的连接,但如果控制套接字不存在或未监听,则会恢复正常连接。

换句话说,“ControlMaster no”仍然允许ssh使用现有的控制套接字(如果存在)。因此它仍将解释ControlPath并寻找控制套接字。

如果要禁用 ssh 实例的控制功能,请ControlPath按照手册页中的说明将其设置为“none”。

相关内容