如何解决由于不活动而被远程主机关闭的 ssh 连接?

Thi*_*Lam 23 ssh

我目前正在尝试通过 ssh 连接到 colo,在 1 到 2 分钟不活动后,我得到:

superuser@thecolo:~$ Connection to 10.123.45.67 closed by remote host.
Connection to 10.123.45.67 closed.
mylocalmac:~ superuser$
Run Code Online (Sandbox Code Playgroud)

只要我在 ssh 终端中输入内容,连接就会保持。一旦发生 1 到 2 分钟的不活动状态,我就会收到上述消息。我尝试连接的机器是 Ubuntu 12.04.1 LTS 64 位服务器版本。它不是物理服务器,而是来宾 VMware。我正在从 mac 终端 sshing。

请不要将此问题与本网站上的类似问题与其中的关键字混淆ssh_exchange_identification,这是无关的。

bal*_*ian 22

将以下内容添加到您的 $HOME/.ssh/config 中,您的所有 ssh 连接将每 30 秒发送一次 TCPKeepAlive:

TCPKeepAlive yes
ServerAliveInterval 30
Run Code Online (Sandbox Code Playgroud)


小智 11

如果您从 Linux 计算机连接,则可以直接从命令行使用某些选项

TCPKeepAlive:这使用 TCP/IP 协议的 KEEPALIVE 选项在指定的不活动时间间隔后保持连接活动。在大多数系统上,这意味着 2 小时。因此,通过将 TCPKeepAlive 选项传递给 SSH,SSH 客户端将向 SSH 服务器发送一个加密数据包,从而保持 TCP 连接正常运行。

ssh -o TCPKeepAlive=yes user@some.host.com
Run Code Online (Sandbox Code Playgroud)

ServerAliveInterval:设置以秒为单位的超时间隔,由您指定,如果没有数据包从 SSH 客户端发送到 SSH 服务器,SSH 将向服务器发送加密请求以获取 TCP 响应。每 30 秒发出一次该请求:

ssh -o ServerAliveInterval=30 user@some.host.com
Run Code Online (Sandbox Code Playgroud)

来源