解决 macOS 下 SSH 空闲自动断开问题
后知后觉 暂无评论

macOS 下使用 Terminal 连接 SSH 远程主机空闲一段时间就会进入假死状态,无法操作,短暂无响应后。

这是因为终端连接一段时间后无法检测到心跳就会断开连接。

解决办法

客户端配置

用户模式

在客户端修改终端设置,每隔固定时间发心跳包来保持长连接状态,强烈推荐使用此方式进行配置,以防对全部的

% vim ~/.ssh/config

直接添加以下字段

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 2
注意:此方式仅对当前用户生效,若 Mac 上存在多个用户,则需要对全部用户进行此操作,不建议在系统中进行修改。

全局模式

% sudo vim /etc/ssh/ssh_config

添加以下两行

    ServerAliveInterval 30
    ServerAliveCountMax 2
小贴士:不推荐使用此方案。

服务端配置

在服务端修改终端配置,定时发送心跳包,保持长连接状态,在常见的 Linux 发行版中一般都不会开启。

$ sudo vim /etc/ssh/sshd_config

查找以下注释字段取消注释或直接添加至文件最后

ClientAliveInterval 60
ClientAliveCountMax 3

参数说明

参数说明
ClientAliveInterval指定了服务器端向客户端请求消息 的时间间隔,默认是 0 ,不发送
ClientAliveInterval60 表示每分钟发送一次,然后客户端响应,这样就保持长连接了
ClientAliveCountMax使用默认值 3 即可
ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开。正常情况下,客户端不会不响应。

重新加载 sshd 服务。退出客户端,再次登陆即可验证。

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。