设置 SSH 空闲超时 Ubuntu 20.04

use*_*308 7 ssh sshd

我希望传入的ssh 会话在安全关键服务器不活动时自动断开连接。

\n

我已经设置了以下设置

\n
TCPKeepAlive no\nClientAliveInterval  30\nClientAliveCountMax 0\n
Run Code Online (Sandbox Code Playgroud)\n

我希望 sshd 由于TCPKeepAlive以下原因不会发送 KeepAlive-Packages ClientAliveCountMax- 并且我的会话在 30 秒后超时。最重要的是,我认为TCPKeepAlive可以保留默认值,应该是yes.

\n

我已经检查了现有的会话,如下所示:

\n
root@<server>:/etc/apache2# w\n 06:53:51 up 2 days, 21:25,  2 users,  load average: 0,00, 0,00, 0,00\nUSER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT\n_____-ad pts/0    ____________      Do11    6.00s  0.99s  0.00s sshd: _____-admin [priv]\n_____-us pts/1    ____________     06:40   13:26   0.02s  0.02s -bash\n
Run Code Online (Sandbox Code Playgroud)\n

会话不会超时...

\n

我当然重新启动了 sshd 。

\n
root@<server>:/etc/apache2# sshd -T | grep -i "ClientAlive"\nclientaliveinterval 30\nclientalivecountmax 0\n
Run Code Online (Sandbox Code Playgroud)\n

客户端是否仍在发送 KeepAlive-Packages?我无法控制连接的所有版本的客户端..

\n

参考文献:\n https://www.golinuxcloud.com/disconnect-idle-ssh-session-tcpkeepaliv-linux/ \n https://secscan.acron.pl/centos7/5/2/13

\n

编辑:TCPKeepAlive yes不会改变行为,会话仍然存在。重新启动 sshd 后,我还启动了一个新会话,以避免 ssh 会话中出现旧设置。

\n

编辑2:在上面的描述中添加关键字“传入”以使其更清楚,我希望我的 ssh 服务器(sshd)在空闲超时后删除连接,因为用户可能会忘记他们打开的(和未使用的)ssh 会话。

\n

EDIT3:仅供参考 - 使用的 sshd 版本:

\n
root@<server>:/etc/apache2# dpkg -l openssh-server\nGew\xc3\xbcnscht=Unbekannt/Installieren/R=Entfernen/P=Vollst\xc3\xa4ndig L\xc3\xb6schen/Halten\n| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/\n         Halb installiert/Trigger erWartet/Trigger anh\xc3\xa4ngig\n|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)\n||/ Name           Version            Architektur  Beschreibung\n+++-==============-==================-============-=================================================================\nii  openssh-server 1:8.2p1-4ubuntu0.1 amd64        secure shell (SSH) server, for secure access from remote machines\nroot@<server>:/etc/apache2# sshd -V\nunknown option -- V\nOpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f  31 Mar 2020\n
Run Code Online (Sandbox Code Playgroud)\n

按预期工作

\n
    \n
  • Debian 10(OpenSSH_7.9p1 Debian-10+deb10u2、OpenSSL 1.1.1d 2019 年 9 月 10 日)*
  • \n
  • Ubuntu 16.04(OpenSSH_7.2p2 Ubuntu-4ubuntu2.8、OpenSSL 1.0.2g 2016 年 3 月 1 日)
  • \n
\n

*对于 Debian 10,我想比较sshd -T。\n不同的选项:casignaturealgorithms, gssapikexalgorithms, hostbasedacceptedkeytypes, hostkeyalgorithms, kexalgorithms, passwordauthentication, permitrootlogin, pubkeyacceptedkeytypes, pubkeyauthoptions,securitykeyprovider

\n

我只设置了passwordauthentication no

\n

我从同一主机连接,唯一的区别是我对有问题的服务器使用了 pubkey 身份验证,对 Debian 10 服务器使用了密码身份验证。

\n

抱歉,它变得很长..它有点变成了错误报告..

\n

在 Debian 10 上:

\n
    \n
  • ClientAliveInterval 10, ClientAliveCountMax 3:每10秒ssh -v记录一次消息debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
  • \n
  • ClientAliveInterval 10, ClientAliveCountMax 0: 会话在 10 秒后断开。
  • \n
\n

在 Ubuntu 20.04 上:

\n
    \n
  • ClientAliveInterval 10, ClientAliveCountMax 0:每10秒ssh -v记录一次消息debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
  • \n
\n

Dou*_*ies 8

从最新版本的 openssh 服务器开始,无法通过/etc/ssh/sshd_config.

虽然人们可以找到很多参考资料说要结合设置ClientAliveCountMax 0ClientAliveInterval N创建不活动/空闲超时,但显然这不是预期的功能,现在已被有意关闭。

ClientAliveCountMax 的sshd_config 手册页的相关更改是以下附加句子:“ Setting a zero ClientAliveCountMax disables connection termination.

有些人提交了针对 openssh 的错误报告,特别是这个这个。一些特别相关的摘录:

ClientAliveCountMax=0 从未被指定为空闲超时。如果这样做的话,那就是偶然的,而且是不可靠的。例如,如果客户端指定了它自己的 ServerAliveTimeout 或保持转发的 TCP 连接打开,那么它永远不会触发。

如果您需要空闲超时,那么我建议查看 shell 功能(例如 bash 的 TMOUT)或类似 PAM 模块的功能。