如何为 sshd 上未使用的会话定义超时?

如何为 sshd 上未使用的会话定义超时?

我在 Ubuntu 16.4 LTE 上使用 sshd,我正在尝试配置我的系统sshd,以便当用户连接时间过长而不执行任何操作时,他会被 ssh 服务器断开连接。

答案1

另外,请确保 /etc/ssh/sshd_config 中取消注释以下参数

ClientAliveInterval 900
ClientAliveCountMax 0

如果没有,也会导致断线。 (更改将在重新启动 sshd 后生效,并且仅适用于之后打开的会话)。

答案2

我建议在 shell 中实现,而不是在 sshd 中。

来自高级 Bash 脚本指南,第 9.1 节。内部变量:

$TMOUT

If the $TMOUT environmental variable is set to a non-zero
value time, then the shell prompt will time out after time
seconds. This will cause a logout.

为了使用户更难取消设置该变量,您可以在系统范围的登录脚本中将其设置为只读,例如readonly TMOUT=900.

如果您只需要 SSH 会话的超时,请将其设置为有条件的。例如,如果您的发行版有/etc/profile.d,您可以将其放入/etc/profile.d/ssh-timeout.sh

if [ "$SSH_CONNECTION" != "" ]; then
    readonly TMOUT=900    # a 15-minute timeout for SSH connections only
fi 

相关内容