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


25

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

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

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

另外,是否有命令转储当前sshd设置的列表?我什么都看不到man sshd


3
可以将某些外壳设置为在超时后退出。这将导致ssh会话终止。检查是否设置了TMOUT环境变量。
肯斯特,2014年

Answers:


23

中的注释行sshd_config通常显示默认值。问题中的所有行都是这种情况。您可以在手册sshd_config页中对此进行验证。以下是相关片段:

TCPKeepAlive

      指定系统是否应将TCP Keepalive消息发送到另一侧。如果发送了它们,则将正确地注意到连接中断或其中一台计算机崩溃。但是,这意味着如果路由暂时中断,连接将会终止,并且有些人会觉得烦。另一方面,如果未发送TCP Keepalive,则会话可能会无限期地挂在服务器上,从而留下“幽灵”用户并消耗服务器资源。

      默认值为“是”(发送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。


1
如果有误,请更正我,但是如果我和计算机之间没有防火墙(带有默认配置),那么我将永远不会断开连接吗?我知道我们的防火墙会在60分钟后丢弃空闲的TCP连接,因此这就是关闭空闲连接的地方。我只是想检查一下OpenSSH本身是否明确关闭了会话。我认为答案是否定的,openssh不会明确关闭空闲连接,但防火墙通常可以关闭。答案中提到的设置实际上有助于保持连接或在会话断开后正确终止会话。
Banjer 2014年

2
带引号的文字说ClientAliveInterval的默认值为0,这意味着它没有定义连接保持打开的时间间隔。但是,我们知道时间间隔默认情况下具有一些有限值。因此,似乎必须存在其他一些参数来设置默认情况下连接保持打开状态的时间。如果以上分析是正确的,则假设服务器和客户端都是运行openssh的linux计算机,并且都使用所有默认值。在这种情况下,哪一侧设置默认值,它的值是多少,在哪里设置?
Ben Crowell 2015年

2
@BenCrowell 但是我们知道时间间隔默认情况下具有一些有限值。什么时间间隔,您怎么知道?
Piotr Dobrogost


6

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

您显示的设置与连接断开时的超时有关,与远程主机上的Shell以及用户在此进行或不进行的操作无关。

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

有关:


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

sshd -T

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

-T

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

此选项已于sshd2008 年添加到OpenSSH 5.1 / 5.1p1中。


3

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

对于bash:

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

通过运行进行测试,TMOUT=10然后等待10秒钟以关闭连接。

对于tcsh:

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

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


-2

如果希望每个人的超时时间为10秒,请对服务器配置(sshd_config)执行以下操作:

ClientAliveInterval 10
ClientAliveCountMax 0

如果希望本地客户端的超时为10秒,请对客户端配置(ssh_config)执行以下操作:

ServerAliveInterval 10
ServerAliveCountMax 0

如果AliveCountMax参数为非零值,则该参数可能无法正常工作,因为服务器将回复重置计时器(除非存在连接问题)。您可以通过在打开调试的情况下运行ssh客户端来查看此信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.