如何设置 ssh 会话的最大持续时间?

如何设置 ssh 会话的最大持续时间?

出于安全原因,我需要将 ssh 会话的最大持续时间限制为 2 小时,即使它始终处于活动状态(不是空闲)。

我看到 sshd_config 允许使用ClientAliveIntervalClientAliveCountMax属性设置会话空闲时间。这不是我的兴趣。

我可以配置其他设置来控制会话的最大活动时间吗? 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) 来实现此目的。

ssh连接后自动在服务器中运行脚本

一种想法是计时器会随着用户的每个操作而重新启动,或者用户每 10 分钟或会话即将关闭的最后 5 分钟收到一条控制台消息

如果同一用户仍然登录,如何防止 ssh 用户登录?

如何防止SSH中的多个连接?

如何断开ssh用户连接,或者限制ssh登录次数?

相关内容