我想将我的 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 服务器
CLientAliveInterval
和ClientAliveCountMax
设置决定了客户端在断开连接之前可以保持无响应的时间长度。 - 客户端的
ServerAliveInterval
设置ServerAliveCountMax
决定了在客户端断开连接之前服务器可以保持无响应的时间长度。
您可以更改客户端的 Server* 相关设置,但这不会覆盖服务器上的 Client* 设置,而且由于客户端和服务器都会按照设定的时间间隔互相发送 keepAlive 消息,因此您还必须更改服务器上的设置。