当我在 SSH 连接中处于不活动状态时,我经常收到此消息。
client_loop: send disconnect: Broken pipe
我尝试了以下操作:
- 添加
ServerAliveInterval=86400
并ServerAliveCountMax=14
到我的配置文件。 - 添加
ServerAliveInterval=86400
和ServerAliveCountMax=14
到我的sshd_config
文件。 - 使用
-o
标志来指定ServerAliveInterval
和ServerAliveCountMax
。
但由于某种原因,上述方法似乎都不适用于我的电脑。
答案1
我最近将工作站换成了 Debian(OpenSSH_9.2p1 Debian-2+deb12u2,OpenSSL 3.0.11 2023 年 9 月 19 日),大约 30 分钟不活动后,就开始出现这种断开连接的情况。很难辨别这是服务器端还是客户端的问题——有几台主机没有将我踢出。
但最终为我解决这个问题的方法是将其添加 ServerAliveInterval 300
到我的 ~/.ssh/config。这也可以在 /etc/ssh/ssh_config 中为所有用户设置。
我不确定为什么这样做有效。根据我阅读手册页的方式,这应该会在 15 分钟后将我踢出(300 秒 ServerAliveInterval X 3 ServerAliveCountMax)。默认的 ServerAliveInterval 为 0 应该意味着“永远”,但显然有些事情发生了变化。有人能解释一下吗?