我希望传入的 ssh 会话在安全关键服务器不活动时自动断开连接。
我设置了以下设置
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 0
我希望 sshd 不会发送 KeepAlive-Packages 由于TCPKeepAlive
和ClientAliveCountMax
- 并且我的会话将在 30 秒后超时。最重要的是,我认为TCPKeepAlive
可以保留其默认值,应该是yes
.
我已经检查了这样的现有会话:
root@<server>:/etc/apache2# w
06:53:51 up 2 days, 21:25, 2 users, load average: 0,00, 0,00, 0,00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
_____-ad pts/0 ____________ Do11 6.00s 0.99s 0.00s sshd: _____-admin [priv]
_____-us pts/1 ____________ 06:40 13:26 0.02s 0.02s -bash
会话不会超时...
我当然重新启动了 sshd。
root@<server>:/etc/apache2# sshd -T | grep -i "ClientAlive"
clientaliveinterval 30
clientalivecountmax 0
客户端还能发送 KeepAlive-Packages 吗?我无法控制所有连接的客户端版本..
参考资料: https ://www.golinuxcloud.com/disconnect-idle-ssh-session-tcpkeepaliv-linux/ https://secscan.acron.pl/centos7/5/2/13
编辑:TCPKeepAlive yes
不会改变行为,会话仍然存在。重新启动 sshd 后,我还启动了一个新会话,以避免在我的 ssh 会话中使用旧设置。
EDIT2:在上面的描述中添加了关键字“incoming”以使其更清楚,我希望我的 ssh 服务器(sshd)在空闲超时后断开连接,因为用户可能会忘记他们打开(和未使用)的 ssh 会话。
EDIT3:仅供参考 - 使用 sshd 版本:
root@<server>:/etc/apache2# dpkg -l openssh-server
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name Version Architektur Beschreibung
+++-==============-==================-============-=================================================================
ii openssh-server 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) server, for secure access from remote machines
root@<server>:/etc/apache2# sshd -V
unknown option -- V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
按预期工作
- Debian 10(OpenSSH_7.9p1 Debian-10+deb10u2,OpenSSL 1.1.1d 2019 年 9 月 10 日)*
- Ubuntu 16.04(OpenSSH_7.2p2 Ubuntu-4ubuntu2.8,OpenSSL 1.0.2g 2016 年 3 月 1 日)
*对于 Debian 10,我想比较sshd -T
. 不同的选项:casignaturealgorithms
, gssapikexalgorithms
, hostbasedacceptedkeytypes
, hostkeyalgorithms
, kexalgorithms
, passwordauthentication
, permitrootlogin
, pubkeyacceptedkeytypes
, pubkeyauthoptions
,securitykeyprovider
我只设置了passwordauthentication no
我从同一主机连接,唯一的区别是我对有问题的服务器使用了 pubkey 身份验证,而对 Debian 10 服务器使用了密码身份验证。
抱歉,它变长了..它有点变成了一个错误报告..
在 Debian 10 上:
ClientAliveInterval 10
,ClientAliveCountMax 3
:每 10 秒ssh -v
记录一次消息debug1: client_input_channel_req: channel 0 rtype [email protected] reply 1
ClientAliveInterval 10
,ClientAliveCountMax 0
: 会话在 10 秒后断开。
在 Ubuntu 20.04 上:
ClientAliveInterval 10
,ClientAliveCountMax 0
:每 10 秒ssh -v
记录一次消息debug1: client_input_channel_req: channel 0 rtype [email protected] reply 1
从最新版本的 openssh 服务器开始,无法通过
/etc/ssh/sshd_config
.虽然可以找到很多参考资料说要
ClientAliveCountMax 0
结合设置ClientAliveInterval N
以创建不活动/空闲超时,但显然这不是预期的能力,现在已被有意关闭。ClientAliveCountMax的 sshd_config 手册页的相关更改是这句附加语句:“
Setting a zero ClientAliveCountMax disables connection termination.
”有些人已经提交了针对 openssh 的错误报告,特别是这个和这个。一些特别相关的摘录:
和