设置 ssh 客户端在不活动后断开连接

设置 ssh 客户端在不活动后断开连接

我想将我的 ssh 客户端配置为在一段时间不活动后断开与特定主机的连接。我没有服务器的 root 访问权限。我需要从客户端而不是服务器执行此操作;服务器上的用户由多人共享。

理想情况下,我可以通过我的 ssh 配置文件执行此操作,以便我可以对文件进行源控制并将其带到我的许多主目录。

我已经在我的 ssh 配置文件 (~/.ssh/config) 中尝试了以下条目:

Host somehostname
    Hostname somehostname
    User someuser
    ConnectTimeout 60

然而,我登录并等待 60 秒后,我仍然处于连接状态。

我在用着:

$ ssh -v
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012

答案1

正如手册页ssh_config所述,ConnectTimeout

指定连接到 SSH 服务器时使用的超时时间(以秒为单位),而不是使用默认的系统 TCP 超时时间。此值仅在目标关闭或确实无法访问时使用,而不是在目标拒绝连接时使用。

这是不是相当于 bash 的$TMOUT变量,即当交互式会话空闲时自动从 shell 注销。我认为您无法按照自己想要的方式(即客户端)做自己想做的事情。

答案2

这里有几个因素在起作用:

  • sshd 服务器CLientAliveIntervalClientAliveCountMax设置决定了客户端在断开连接之前可以保持无响应的时间长度。
  • 客户端的ServerAliveInterval设置ServerAliveCountMax决定了在客户端断开连接之前服务器可以保持无响应的时间长度。

您可以更改客户端的 Server* 相关设置,但这不会覆盖服务器上的 Client* 设置,而且由于客户端和服务器都会按照设定的时间间隔互相发送 keepAlive 消息,因此您还必须更改服务器上的设置。

相关内容