我经常使用 OpenSSH 的ControlMaster 功能来加速与我经常使用的一些系统的新连接。
\n\n我的 中有以下内容~/.ssh/config:
Host *\n ConnectTimeout 7\n ControlMaster auto \n ControlPath ~/.ssh/controlmasters/%r@%h:%p\n ControlPersist 10m \nRun Code Online (Sandbox Code Playgroud)\n\n一般来说,这效果很好。然而,有一个主要的烦恼:如果主机的 ControlMaster 套接字由于网络中断而获取 \xe2\x80\x9chung\xe2\x80\x9d ,ssh that_host则会永远挂起。据我所知,它实际上永远不会放弃现有的 ControlMaster 套接字并尝试创建一个新的。我必须手动ssh -O exit that_host才能工作。
我真正希望我能说服ssh做的是放弃并拆除 ControlMaster 套接字(如果它无法在ConnectTimeout.
是否有ControlMasterConnectTimeout我缺少的选项?或者我可以通过其他方式说服 ssh 检测并重新启动死的 ControlMaster 套接字?
nhe*_*hed 11
长话短说
Host *
ServerAliveInterval 11
Run Code Online (Sandbox Code Playgroud)
我猜ConnectTimeout这里不适用,因为主站已经连接了。
这不是特定的ControlMaster,但您可以轻松地将其应用于配置中的相关条目。
您可以使用两种不同的方法来检测失效连接:
TCPKeepAlive使用底层套接字中的机制。ServerAliveInterval(直至ServerAliveCountMax连续失败)我喜欢后者,因为可能会有其他损坏/挂起的东西被拾起,并且手册还提到了欺骗的可能性。
显然你可以选择另一个数字。该变量与(默认 3)相结合ServerAliveCountMax将确定何时断开连接,因此我看到在断开 VPN 连接后大约 33 秒内一切都会消失(我没有准确测量这一点,并注意到一个会话花费了更长的时间,但是我在全球范围内应用了此设置,也许我应该只将其应用于我使用的主机ProxyJump)。
| 归档时间: |
|
| 查看次数: |
2255 次 |
| 最近记录: |