远程系统意外断开连接时,远程计算机上的 SSH 进程不会被终止

远程系统意外断开连接时,远程计算机上的 SSH 进程不会被终止

我有一个问题,但一直找不到答案。我有两台电脑,都运行 Ubuntu 12.04。我将其中一台电脑放在家里,并使用 SSH 从另一台(“远程”)电脑连接到它。远程电脑能够毫无问题地连接到家用电脑。远程电脑还在 /etc/ssh/ssh_config 中将 SetAliveInterval 设置为 60,这样即使我离开电脑片刻,连接也不会中断。

有时,我的远程计算机上的互联网连接会中断。互联网中断会导致我的 SSH 隧道关闭(当然)。但是,当我恢复互联网连接并使用新的 SSH 隧道重新连接到家用计算机时,我可以看到#ps ax旧的 SSH 连接进程仍在运行。这是一个问题,因为我在家用计算机上使用加密的主目录,它不允许重新加密文件,直到该(现已失效的)SSH 连接被终止。

有没有办法在家用计算机上设置 sshd_config,以便它自动检测连接何时中断并终止它?

答案1

尝试屏幕或者tmux。在服务器端,或者如果愿意的话在两侧:

sudo apt-get install tmux

登录后,启动tmux

tmux

如果连接中断,请通过以下方式重新登录远程控制并重新连接tmux会话。要发现会话编号:

tmux ls

输出可能是这样的:

0:1 个窗口(创建于 2012 年 12 月 25 日星期二 19:20:40)

连接到tmux像这样的编号会话:

tmux attach -t 0

然后您就回到了上次离开的位置。您不必终止会话。它们只是等待您的下一次访问。或者,如果您只想终止会话...

在服务器端,查看/etc/ssh/sshd_config设置客户端存活间隔客户端存活数最大值。 (man 5 ssh_config

ClientAliveInterval 300
ClientAliveCountMax 0

一旦它们更改为您的偏好,请重新启动 SSH 服务器。

sudo /etc/init.d/ssh restart

300 是秒(五分钟)。

答案2

你可以尝试莫什安装 mosh,一种在 SSH 基础上构建的 SSH 替代品。它支持漫游和间歇性连接,因此,只要您的互联网连接在中断后重新建立,您的 Mosh (SSH) 会话就会从您离开的地方继续。

您需要在两台机器上安装 Mosh。

参考:

相关内容