OpenSSH 服务器连接在几分钟不活动后断开
我已经写过如何使用 OpenSSH 拒绝用户访问。今天,我将写一个可能导致 ssh 连接超时的另一个有趣的问题,以及如何在 macOS、Linux、*BSD 和类 Unix 系统中增加 SSH 连接超时。
基本上,这是一个安全功能。Ssh 连接在 N 分钟不活动后会冻结或断开。根据官方 OpenSSH 手册页:
这通常是由于数据包过滤器或 NAT 设备由于不活动而导致 TCP 连接超时。出于安全考虑,大多数企业仅使用 SSH 协议版本 2。此问题仅发生在版本 2 上。
如果您长时间使用 ssh 并离开工作站去做其他工作,您的连接将被远程服务器断开。对我来说,这是一个有点烦人的问题。因此,我们可以按如下方法摆脱此问题。要查看当前设置,请使用grep 命令或egrep 命令:
$ egrep -i 'ClientAliveInterva|ClientAliveCountMax' /etc/ssh/sshd_config
修复几分钟不活动后 OpenSSH 服务器连接断开的问题
首先,登录远程服务器,然后使用 sudo 命令和您选择的文本编辑器打开 /etc/ssh/sshd_config 文件:
$ sudo vi /etc/ssh/sshd_config
按如下方式修改设置:
其中,
ClientAliveInterval 30
ClientAliveCountMax 5
- ClientAliveInterval:设置超时间隔(以秒为单位,为 30),如果在此间隔之后未从客户端收到任何数据,sshd 将通过加密通道发送一条消息,以请求客户端做出响应。默认值为 0,表示不会将这些消息发送给客户端。此选项仅适用于协议版本 2。
- ClientAliveCountMax:设置 sshd 可以发送的客户端活动消息数(5),而无需从客户端收到任何消息。如果在发送客户端活动消息时达到此阈值,sshd 将断开客户端连接,终止会话。
关闭并保存文件。接下来,重新启动 sshd 服务,运行:
# /etc/init.d/ssh restart
## OR ##
# service sshd restart
## For Linux+systemd ##
# systemctl restart sshd.service
使用客户端配置增加 SSH 连接超时
另一个选项是在客户端的文件中启用 ServerAliveInterval 选项$HOME/.ssh/ssh_config。当您无法访问远程服务器的 sshd 配置文件时非常有用。打开终端应用程序,然后键入以下命令:
$ vi ~/.ssh/ssh_config
附加/修改值如下:
其中,
ServerAliveInterval 15
ServerAliveCountMax 3
- ServerAliveInterval 15:设置超时间隔(以秒为单位),如果在此间隔内未从服务器收到任何数据,则 ssh 将通过加密通道发送消息以请求服务器响应。例如,将超时设置为 15 秒。
- ServerAliveCountMax 3:设置 ssh 命令在不从服务器收到任何消息的情况下可以发送的服务器活动消息数。如果在发送服务器活动消息时达到此阈值,ssh 将断开与服务器的连接,终止会话。服务器活动消息通过加密通道发送,因此不可伪造。
例如,当ServerAliveInterval设置为 15 并ServerAliveCountMax保留为 3 时,如果服务器没有响应,ssh 将在大约 45 秒后断开连接。同样,此选项仅适用于协议版本 2。您也可以在客户端的 /etc/ssh/ssh_config 文件中为所有用户添加上述选项。有关更多信息,请参阅以下教程:
结论
我们还可以使用 Mosh(移动 shell)从桌面连接到服务器。它类似于 SSH,但具有旨在提高移动用户的可用性的附加功能,尤其是在频繁讨论时。请阅读 ssh、sshd 和 sshd_config/ssh_config 的手册页,以获取更多信息,或者在您的 macOS、Linux 或 Unix 桌面上键入以下 man 命令:
$ man sshd_config
$ man sshd_config
$ man sshd
- 20 个 OpenSSH 服务器最佳安全实践
- 如何在 Linux / Unix 系统上设置 SSH 密钥
- Linux / Unix 用户的 OpenSSH 配置文件示例
- 审计 Linux/Unix 上的 SSH 服务器和客户端配置
- 如何在 FreeBSD 上安装和升级 OpenSSH 服务器
- Ubuntu Linux 安装 OpenSSH 服务器
- 在 Alpine Linux 上安装 OpenSSH 服务器(包括 Docker)
- Debian Linux 安装 OpenSSH SSHD 服务器
- 配置 OpenSSH 以监听 IPv6 地址
- OpenSSH 服务器连接在几分钟不活动后断开
- 在 OpenSSH 身份验证之前显示横幅/消息
- 强制 OpenSSH(sshd)仅监听选定的多个 IP 地址
- OpenSSH 使用 ssh-keygen 命令更改密码
- 重复使用 SSH 连接以通过多路复用加速远程登录过程
- 重新启动 SSHD 服务器之前检查语法错误
- 更改 Linux 或 Unix 服务器上的 ssh 端口
- OpenSSH 拒绝或限制用户和组的访问
- Linux OpenSSH 服务器拒绝 root 用户访问/登录
- 在 Linux 上禁用 ssh 密码登录以提高安全性
- SSH ProxyCommand 示例:通过一台主机到达服务器
- OpenSSH 多路复用器可加速 OpenSSH 连接
- 在远程 Linux / UNIX 服务器中安装 / 附加 SSH 密钥 Authorized_keys
- 使用 ssh-copy-id 与监听不同端口的 OpenSSH 服务器配合使用