如何防止 SSH 会话冻结?

syn*_*gma 101 ssh

我已经ServerAliveInterval并且在少数机器的ClientAliveIntervalSSH 客户端/服务器配置文件中也设置为 540(我认为将其设置为更多不是一个好主意)。我处理了许多 SSH 会话,这些会话在几分钟后就会冻结。

我该如何解决?我想要的是有一个完全不冻结的会话,这样如果我在 8 点打开一个会话并且 4 小时不使用它,例如,仍然在 12 点再次使用它而不必再次登录.

Val*_*ami 123

您在做出的更改/etc/ssh/ssh_config/etc/ssh/sshd_config是正确的,但仍然不会有任何效果。

要使您的配置正常工作,请在客户端上进行以下配置更改:

/etc/ssh/ssh_config

Host *
ServerAliveInterval 100
Run Code Online (Sandbox Code Playgroud)

ServerAliveInterval 客户端会每 100 秒向服务器发送一个空包,以保持连接处于活动状态

NULL 数据包 由服务器发送给客户端。相同的数据包由客户端发送到服务器。TCP NULL 数据包不包含任何控制标志,如 SYN、ACK、FIN 等,因为服务器不需要来自客户端的回复。NULL 数据包描述如下:https : //tools.ietf.org/html/rfc6592

然后在服务器上配置sshd部分。

/etc/ssh/sshd_config

ClientAliveInterval 60
TCPKeepAlive yes
ClientAliveCountMax 10000
Run Code Online (Sandbox Code Playgroud)

ClientAliveInterval服务器将等待 60 秒,然后再向客户端发送空包以保持连接活动

TCPKeepAlive是为了确保某些防火墙不会丢弃空闲连接。

ClientAliveCountMax服务器将向客户端发送活动消息,即使它没有从客户端收到任何消息。

最后重启 ssh server

service ssh restartservice sshd restart取决于您使用的系统。

  • @Anders 你得到错误是因为 `ClientAliveInterval` 和 `ClientAliveCountMax` 是 ssh 服务器选项,因此用于 `sshd_config` 而不是 `ssh_config` (3认同)

小智 13

个人建议:screen在远程主机上使用;只要它在终端中保持活动状态,它就会设法使您的连接保持活动状态。

以下是我通常添加的内容,/etc/screenrc以便快速识别我的屏幕会话:

hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"
defscrollback 8192
Run Code Online (Sandbox Code Playgroud)

编辑:提示。

hardstatus字符串将显示底部状态行,例如: 带有三个打开选项卡的屏幕会话示例

回滚缓冲区也扩展到 8192 行,而不是通常的 1000-1500(取决于分布)。

  • 只是为了澄清,`screen` 不会使您的 ssh 连接保持活动状态。它在独立于您通过“ssh”连接的用户终端的虚拟终端中运行进程,因此该进程不依赖于您的连接。在它解决之前,您仍然会失去您的“ssh”连接。 (12认同)
  • 尽管我喜欢 `screen`,我建议新用户从 [`tmux`](http://en.wikipedia.org/wiki/Tmux) 开始。 (2认同)

Tom*_*ale 5

如果问题是笔记本电脑处于休眠状态或网络连接不完美,我建议使用moshwhich run overssh并允许自动重新连接。

网站

Mosh(移动外壳)

允许漫游的远程终端应用程序,支持间歇性连接,并提供用户按键的智能本地回声和线路编辑。

Mosh 是 SSH 的替代品。它更加强大和响应迅速,尤其是通过 Wi-Fi、蜂窝和长途链接。

Mosh 是免费软件,可用于 GNU/Linux、BSD、macOS、Solaris、Android、Chrome 和 iOS。

结合tmux(或较旧的screen),这使我可以通过ssh笔记本电脑连接到服务器,即使在更改 wifi 连接和幸存的移动数据丢失时也能保持连接数天。