运行环境
- CentOS/RHEL 7
- CentOS/RHEL 8
问题描述
使用 SSH 连接Linux 云主机时,客户端或服务端 secure
日志(可以通过 VNC 进入系统查看)中可能会出现类似如下信息,导致用户无法正常登录:
User test from x.x.x.x not allowed because listed in DenyUsers
解决方案
- 登录控制台,通过VNC进入操作系统
- 使用命令打开
/etc/ssh/sshd_config
,如下所示:
vi /etc/ssh/sshd_config
检查sshd_config
配置文件中是否包含类似如下配置:
AllowUsers root
DenyUsers test
DenyGroups test
AllowGroups root
- 删除“AllowUsers”、“DenyUsers”、“DenyGroups”、“AllowGroups”,字段或者在配置项前添加“#”,如下所示:
#AllowUsers root
#DenyUsers test
#DenyGroups test
#AllowGroups root
- 使用如下指令,校验ssh配置文件,并重启 SSH 服务使配置生效:
sshd -t
systemctl restart sshd
问题分析
该问题通常是由于 SSH 服务启用了用户登录控制参数,对可登录用户进行限制所致。 SSH 服务相关参数,可以对登录的用户或用户组进行限制。说明如下:
- AllowUsers:允许登录的用户白名单,只有该参数标注的用户可以登录。
- DenyUsers:拒绝登录的用户黑名单,该参数标注的用户都拒绝登录。
- AllowGroups:允许登录的用户组白名单,只有该参数标注的用户组可以登录。
- DenyGroups:拒绝登录的用户组黑名单,该参数标注的用户组都拒绝登录。
- 如果“AllowUsers”和“DenyUsers”参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。
- 如果“AllowUsers”中的用户在“DenyGroups”用户组中,则拒绝策略优先,所以最终该用户还是无法登录。