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

如何解决由于不活动而导致远程主机关闭的 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$

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

请不要将该问题与本网站中带有关键词ssh_exchange_identification的类似问题混淆,它们是不相关的。

答案1

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

TCPKeepAlive yes
ServerAliveInterval 30

答案2

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

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

ssh -o TCPKeepAlive=yes [email protected]

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

ssh -o ServerAliveInterval=30 [email protected]

来源

答案3

你需要“保持活跃”

根据您的客户,这可能很简单或者很容易 - 它不应该更难!

例如,在油灰它位于连接选项上(将 keepalive 设置为非零值)

答案4

我遇到了同样的问题,并按如下方式解决:

允许用户 SSH 访问

例如superuser,允许特定用户进行 SSH 访问,编辑您的服务器/etc/ssh/sshd_config文件

sudo nano /etc/ssh/sshd_config

添加或者修改以下行:

AllowUsers superuser

保存文件(Ctrl+O)

重新启动 ssh,以 Debian 为例: sudo /etc/init.d/ssh restart

现在您应该可以连接了!

相关内容