![如何为 sshd 上未使用的会话定义超时?](https://linux22.com/image/129416/%E5%A6%82%E4%BD%95%E4%B8%BA%20sshd%20%E4%B8%8A%E6%9C%AA%E4%BD%BF%E7%94%A8%E7%9A%84%E4%BC%9A%E8%AF%9D%E5%AE%9A%E4%B9%89%E8%B6%85%E6%97%B6%EF%BC%9F%20.png)
我在 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