OpenSSH 的默认空闲超时是多少?

Ban*_*jer 39 ssh centos openssh

我似乎找不到这个简单问题的答案,我需要一些合规文档。

在 CentOS 6.5 (OpenSSH 5.3p1-94.el6) 的默认安装中,用户的 SSH 会话闲置多长时间后会终止?我相信可以设置以下内容来增加空闲超时,但默认情况下它们被注释掉了。

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
Run Code Online (Sandbox Code Playgroud)

另外,是否有一个命令可以转储当前sshd设置的列表?我看不到任何东西man sshd

jor*_*anm 30

中的注释行sshd_config通常显示默认值。您问题中的所有行都是这种情况。您可以在sshd_config联机帮助页中验证这一点。以下是相关的片段:

TCPKeepAlive

      指定系统是否应向另一方发送 TCP 保持连接消息。如果它们被发送,连接的死亡或其中一台机器的崩溃将被正确地注意到。但是,这意味着如果路由暂时关闭,连接就会中断,有些人会觉得这很烦人。另一方面,如果不发送 TCP keepalive,会话可能会无限期地挂在服务器上,留下“幽灵”用户并消耗服务器资源。

      默认值为“yes”(发送 TCP keepalive 消息),如果网络出现故障或客户端主机崩溃,服务器将通知。这避免了无限挂起的会话。

      要禁用 TCP keepalive 消息,该值应设置为“no”。

      此选项以前称为KeepAlive

ClientAliveCountMax

      设置客户端活动消息的数量(见下文),可以在没有sshd(8)从客户端接收任何消息的情况下发送。如果在发送客户端活动消息时达到此阈值,sshd 将断开客户端连接,终止会话。需要注意的是,客户端活着的消息的使用与TCPKeepAlive (以下)(以上)。客户端活动消息通过加密通道发送,因此不会被欺骗。启用的 TCP keepalive 选项TCPKeepAlive是可欺骗的。当客户端或服务器依赖于知道连接何时变为非活动状态时,客户端活动机制很有价值。

      默认值为 3。如果ClientAliveInterval(见下文)设置为 15,并ClientAliveCountMax保留默认值,则无响应的 SSH 客户端将在大约 45 秒后断开连接。此选项仅适用于协议版本 2。

ClientAliveInterval

      设置一个以秒为单位的超时间隔,如果没有从客户端接收到数据,sshd(8)将通过加密通道发送消息以请求客户端的响应。默认为 0,表示这些消息不会发送到客户端。此选项仅适用于协议版本 2。

  • 引用的文本说 ClientAliveInterval 的默认值是 0,这意味着它没有定义连接保持打开的时间间隔。然而我们知道默认情况下时间间隔有一些有限的值。因此,似乎必须有一些 *other* 参数来设置默认情况下连接保持打开的时间。如果我上面的分析是正确的,那么假设服务器和客户端都是运行 openssh 的 linux 机器,并且都使用所有默认值。在这种情况下,哪一方设置了默认值,它的值是多少,它在哪里设置? (5认同)
  • @BenCrowell *然而我们知道默认情况下时间间隔有一些有限值。*什么*时间间隔*你怎么知道的? (4认同)
  • @PiotrDobrogost:只需连接到任何具有默认设置且没有防火墙的计算机,让它闲置,它最终会因不活动而下降。我从来没有测量过需要多长时间,但我见过这种空闲断开的情况。 (2认同)

小智 15

您可以为客户端或服务器端设置 SSH keepalive:

客户端

文件: /etc/ssh/ssh_config

内容:

Host *
ServerAliveInterval XX
ServerAliveCountMax YY
Run Code Online (Sandbox Code Playgroud)

服务器端

文件: /etc/ssh/sshd_config

内容:

ClientAliveInterval XX
ClientAliveCountMax YY
Run Code Online (Sandbox Code Playgroud)

摘自:http : //www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html

  • 有用,但不会以任何方式回答问题。 (13认同)
  • @bzeaman:公平地说,这里的建议都没有回答这个问题:*“OpenSSH 的默认空闲超时是多少?”* (2认同)

Kus*_*nda 15

OpenSSH 不会终止闲置一段时间的 shell 会话。这不是 OpenSSH 所做的。终止空闲的 shell 会话与 OpenSSH 的配置无关。

您显示的设置与连接断开时的超时有关,与远程主机上的 shell 以及用户在那里做什么或不做什么无关。

远程主机的 shell 可能会在闲置一段时间后终止(或可能被某些其他进程杀死),但这与服务器和 SSH 客户端上的 SSH 服务配置无关。

有关的:


要转储sshd配置,请以 root 身份使用“扩展测试模式”:

sshd -T
Run Code Online (Sandbox Code Playgroud)

这是记录在sshd(8)手册(看OpenSSH_7.7, LibreSSL 2.7.2在OpenBSD这里):

-T

扩展测试模式。检查配置文件的有效性,将有效配置输出到stdout然后退出。或者,可以通过使用一个或多个-C选项指定连接参数来应用匹配规则。

这个选项是sshd在 2008 年为 OpenSSH 5.1/5.1p1添加的。


小智 6

如果要求在一段时间不活动后关闭 SSH 连接,shell 本身会提供超时变量。

对于bash:

TMOUT:如果设置为大于零的值,则 TMOUT 将被视为内置读取的默认超时。当输入来自终端时,如果 TMOUT 秒后输入未到达,则选择命令终止。在交互式 shell 中,该值被解释为发出主提示后等待输入的秒数。如果输入未到达,Bash 将在等待指定秒数后终止。

通过运行TMOUT=10并等待 10 秒来关闭连接来测试这一点。

对于 tcsh:

可以将 autologout shell 变量设置为在给定的不活动分钟数后注销或锁定 shell。

在 tcsh 中,设置十分钟超时的语法是set autologout=10。这在原来的 csh 中不起作用。