我正在使用我想成为控制主机的会话调用 ssh,因此我使用-M
flag (相当于具有ControlMaster yes
)。
但是,如果前一个会话失败并留下僵尸控制文件,则 ssh 将仅记录ControlSocket <control socket path> already exists, disabling multiplexing
并仍然建立连接。这意味着控制套接字实际上没有为后面的会话设置(将是ControlMaster no
)。
如果控制套接字文件已经存在,是否有办法让 ssh 失败,以便我的脚本可以检测并报告问题?我可以让脚本检查控制文件,但要求脚本必须采用控制路径(由于 ssh 配置中的设置(如主机别名和 ControlPath),该路径可能不明显)。
请注意,这个问题与
如果 ssh 控制套接字已存在,如何中止?。该问题是询问由于现有控制会话而存在的控制路径文件,而此问题是由于先前会话失败而出现的。我们还希望此会话成为主会话,以便它可以控制多路复用。所以仅仅删除-M
并不能解决这个问题。谢谢!