我有一个问题,但一直找不到答案。我有两台电脑,都运行 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 是秒(五分钟)。