是否有可能防止或至少检测 SSH 会话重复使用?

是否有可能防止或至少检测 SSH 会话重复使用?

我一直利用会话重用来加快与各种生产服务器的连接,方法是像这样设置我的 ~/.ssh/config 文件:

Host server.company.org
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600

这很好,但是如果我的第一个 ssh 会话在没有代理转发的情况下打开,例如ssh server.company.org,并且我稍后启动另一个需要代理转发的 ssh 命令,例如ssh -A server.company.org,则代理转发不起作用。

是否可以强制第二个 ssh 会话不是除了删除~/.ssh/socketsfirst 的内容之外,还有什么方法可以使用现有套接字?如果没有,是否有可靠的方法来检测现有套接字是否即将被重用?我在脚本中遇到了这个问题,因此用合适的错误消息进行轰炸是可以接受的行为。

答案1

为此,您可以强制ControlMaster auto覆盖,如下所示:

ssh -A -S none server.company.org

...-S none表示不使用控制主机。

您还可以检查ControlMaster特定主机是否正在运行:

ssh -O check server.company.org

...并以同样的方式杀死它:

ssh -O exit server.company.org

相关内容