使 ssh ControlPath 连接充当从属或失败(不回退到 ControlMaster)

使 ssh ControlPath 连接充当从属或失败(不回退到 ControlMaster)

我想强制辅助 ssh 连接使用现有的 ControlMaster 连接,并且失败如果主人不在场。

使用ssh -o ControlPath=somewhere -o ControlMaster=no ...此新连接将查找现有主服务器,如果未找到,则返回创建自己的独立连接。我们可以禁用回退吗?

我能想到的最接近的答案是

ssh -o ControlPath=somewhere -o ControlMaster=no -O check \
    && ssh -o ControlPath=somewhere -o ControlMaster=no

我是否遗漏了什么?

为什么?

对我来说,一个常见的情况是ssh需要与 OTP 或硬件进行交互。我通常使用多个终端,每个终端都运行类似 的程序while sleep 1; do ssh-and-reconnect-to-a-screen-session ; done

在我理想的世界中,会有一个主连接(带有 OTP/令牌检查),然后每个其他终端都会循环并失败,直到它们可以搭载在控制主连接上。

事实上(取决于先前连接失败并重试的随机顺序),打开我的笔记本电脑盖会同时向我发送几个 OTP /令牌检查,因为每个ssh命令都想成为新的主控。

(再次,在完美的世界中,mosh这将解决从我离开的地方继续的问题,但在这里这不是一个真正的选择)-:

答案1

您的用例非常具体。我认为您没有遗漏任何东西。

如果您不想将其放入,则只有几个命令行-S开关-M可供使用~/.ssh/config

ssh -S somewhere -O check host && ssh -S somewhere -M host

相关内容