我正在使用 Red Hat Enterprise Linux (RHEL) 8 计算机,该计算机通过 OpenSCAP 应用了 DISA STIG。STIG 要求用户自动进入 tmux 会话,该 tmux 会话在设置的空闲时间后锁定屏幕,并且 SSH 在另一个空闲时间后断开连接。
我遇到的问题是,我们有一些长时间运行的命令,我们启动它们然后离开。首先,tmux 锁定屏幕,最后 SSH 终止连接。预期的行为是,当我们通过 SSH 重新连接时,旧的 tmux 会话会重新连接,或者在旧会话仍在后台运行时创建新的 tmux 会话。无论哪种方式,我们都不希望 tmux 会话在 SSH 断开连接时终止。
相关的 STIG 和我们的配置如下:
https://www.stigviewer.com/stig/red_hat_enterprise_linux_8/2023-09-11/finding/V-230349
$ cat /etc/profile.d/tmux.sh
if [ "$PS1" ]; then
parent=$(ps -o ppid= -p $$)
name=$(ps -o comm= -p $parent)
case "$name" in (sshd|login) tmux ;; esac
fi
if [ -n "$TMUX" ]; then
# render /etc/issue or else fall back to kernel/system info
agetty --show-issue 2>/dev/null || uname -a
# message of the day
for motd in /run/motd.dynamic /etc/motd; do
if [ -s "$motd" ]; then cat "$motd"; break; fi
done
# last login
last $USER |awk 'NR==2 {
if (NF==10) { i=1; if ($3!~/^:/) from = " from " $3 }
printf("Last login: %s %s %s %s%s on %s\n",
$(3+i), $(4+i), $(5+i), $(6+i), from, $2);
exit
}'
# mail check
if [ -s "/var/mail/$USER" ] # may need to change to /var/spool/mail/$USER
then echo "You have mails."
else echo "You have no mail."
fi
fi
https://www.stigviewer.com/stig/red_hat_enterprise_linux_8/2023-09-11/finding/V-230353
$ cat /etc/tmux.conf
set -g lock-after-time 300
set -g lock-command vlock
bind X lock-session
https://www.stigviewer.com/stig/red_hat_enterprise_linux_8/2023-09-11/finding/V-244525
$ cat /etc/ssh/sshd_config
...
Compression no
ClientAliveInterval 600
ClientAliveCountMax 1
#UseDNS no
...
我还怀疑 systemd-logind 与此有关,因为这一论点在 Debian 邮件列表上。
$ cat /etc/systemd/logind.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See logind.conf(5) for details.
[Login]
StopIdleSessionSec=900
#NAutoVTs=6
#ReserveVT=6
KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=no
#InhibitorsMax=8192
#SessionsMax=8192
#StopIdleSessionSec=infinity
我编辑了较长的文件以提供相关部分。
我尝试编辑 profile.d 启动以匹配这个 StackOverflow 建议,我尝试将 SSH ClientAlive 更改为 60 和 10(加上 systemd restart),尝试将 logind.conf 更改为KillUserProcesses=no
(使用 systemd restart 和 OS restart 取消注释该行),尝试启动一个与我们登录时获得的会话(会话 0)不同的 tmux 会话(会话 1),SSH 断开连接时两个会话都会终止。这些更改均未产生理想的行为。
还有其他人遇到过这个问题并找到了解决方法吗?