Answers:
sshd(服务器)如果在一段时间内未收到客户端的任何消息,则关闭连接。您可以告诉客户端偶尔将生命周期信号发送到服务器。
此文件的配置在文件中~/.ssh/config
。要将信号每隔四分钟发送到remotehost,请在中输入以下内容~/.ssh/config
。
Host remotehost
HostName remotehost.com
ServerAliveInterval 240
这就是我所拥有的~/.ssh/config
。
要为所有主机启用它,请使用:
Host *
ServerAliveInterval 240
还要确保运行chmod 600 ~/.ssh/config
,因为配置文件一定不能被世界读取。
~/.ssh/config
哪里
按Enter,~,.一前一后从冷冻断开会话。
ssh手册页中的“ ESCAPE CHARACTERS”部分介绍了底层详细信息。
EscapeChar ~
的/etc/ssh/ssh_config
(或者~/.ssh/ssh_config
,如果你喜欢)。
EscapeChar ~
已经是内置默认值。
即使这不是您问题的直接答案,也与您遇到的问题高度相关。而不是试图保持连接(所有连接最终死亡),可以使用终端复用器,像screen
和tmux
该会话保持活动状态,即使你的终端被断开的背景。
本质上,当您登录到SSH服务器时,您将立即运行screen
,它将创建并附加一个新会话:
$ screen
然后,继续进行您的外壳工作,就像平常一样。现在,如果连接断开了,那么当您可以重新联机并通过SSH重新连接到服务器时,您将获得当前会话的列表:
$ screen -ls
要重新加入会话:
$ screen -r <session>
<session>
PID或会话名称在哪里。您将重新连接到会话,您可以从上次中断的地方继续!
您甚至可以分离会话并从家中重新连接,以从上次中断的确切地点接起电话。要分离会话,请使用,C-a
后跟C-d
(that Control + A
和Control + D
)。
也有简单的在线教程。
在远程服务器上使用screen
和tmux
在远程服务器上被认为是最佳做法,强烈建议您使用它。有些人会尽量使用screen
默认的登录外壳,因此当他们连接时,他们会立即开始新的screen
会话。
您还可以从SSH服务器端设置空闲超时间隔:
文件: /etc/ssh/ssh_config
内容:
ClientAliveInterval XX
ClientAliveCountMax YY
它的工作方式与客户端设置完全相同,但是空包是从服务器而不是客户端发送的。
摘自:
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
对于那些想阻止客户首先超时的人。
您可以尝试ConnectTimeout 0
在配置文件中进行设置。值0表示除非关闭,否则连接将无限期保持活动状态。
您的配置(或ssh_config)文件可能如下所示:
Host *
ConnectTimeout 0