出于安全原因,我需要将 ssh 会话的最大持续时间限制为 2 小时,即使它始终处于活动状态(不是空闲)。
我看到 sshd_config 允许使用ClientAliveInterval
和ClientAliveCountMax
属性设置会话空闲时间。这不是我的兴趣。
我可以配置其他设置来控制会话的最大活动时间吗? ssh 守护进程在 Amazon Linux 2 上运行,这与 centos 类似。
答案1
没有用于sshd_config
在一段时间后终止活动会话的选项。执行此操作的常规方法是在服务器上运行一个任务,发现 ssh 会话持续时间过长并终止进程。
请注意,当开发人员登录服务器以运行重要命令(例如执行数据库架构更改(通常称为“迁移”))时,这可能会适得其反,该命令需要很长时间才能运行并且不应在中间中断。 CI/CD 系统通常会在应用程序部署过程中运行数据库迁移命令,因此不仅仅是交互式用户运行临时命令才会发生这种情况。
因此,任务(如果您自己编写)可能需要包含不会终止会话的登录白名单。或者具有与两小时默认值不同(更长)的最大允许时间的登录列表。
答案2
嗯,通过 SSH 来做这件事会非常困难。我认为最简单的方法是每次通过 ssh 登录特定帐户时启动后台程序,这会在 10 分钟后终止所有 ssh 连接。老实说,这很容易。您可以在 ~/.profile 或 ~/.bashrc 中添加类似内容
sleep 600
killall --user {whateverhis/herusernameis}
end
在 sshd_config 中使用 ForceCommand。确保登录后执行。
是否可以为特定 Linux 用户设置活动 ssh 连接的时间限制?
Match User ctfuser
ForceCommand "(sleep 600; killall -u ctfuser)& bash"
或者ForceCommand
开始定制script
您可以通过将以下参数添加到配置文件 (/etc/ssh/sshd_config) 来实现此目的。
一种想法是计时器会随着用户的每个操作而重新启动,或者用户每 10 分钟或会话即将关闭的最后 5 分钟收到一条控制台消息