俗话说得好,好记性不如烂笔头!
- 今天用户方反馈,他们新部署的服务无法使用了。按道理来说不应该的,除非出现断电、网络故障或者升级系统等问题。随即远程登录对方主机,连接内部服务器,看看到底是什么问题导致的。但是,通过
ssh
命令无法登录,这下就尴尬了。 - 没办法,只能联系
GTX
的服务人员从物理机里面登录,发现xxx
用户是可以登录,但是root
用户还是无法登录。通过查看系统的安全日志(不同的操作系统对应的文件不一样),发现如下信息。
Permission denied, please try again.
User test from 192.168.xxx.xxx not allowed because not listed in AllowUsers.
User test from 192.168.xxx.xxx not allowed because listed in DenyUsers.
User root from 192.168.xxx.xxx not allowed because a group is listed in DenyGroups.
User test from 192.168.xxx.xxx not allowed because none of user's groups are listed in AllowGroups.
...
从上面的信息,可以看出大概率是因为
ssh
服务启用了用户登录控制参数,对可登录用户进行限制所致。看我下sshd
的配置文件/etc/ssh/sshd_config
果然对root
用户进行限制,不允许直接登录。ssh
服务相关参数,可以对登录的用户或用户组进行限制。- AllowUsers:允许登录的用户白名单; 只有该参数标注的用户可以登录
- DenyUsers:拒绝登录的用户黑名单; 该参数标注的用户都拒绝登录
- AllowGroups:允许登录的用户组白名单; 只有该参数标注的用户组可以登录
- DenyGroups:拒绝登录的用户组黑名单; 该参数标注的用户组都拒绝登录
需要注意的是,拒绝策略优先级高于允许策略。
- 如果
AllowUsers
和DenyUsers
参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。 - 如果
AllowUsers
和DenyGroups
参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。
- 如果
通过修改对应参数,重启
ssh
服务使配置生效。但是,我们通过远程发现xxx
用户还是无法通过ssh
命令登录,很是奇怪!后来通过,查看该用户的密码信息才发现,是该用户的密码已经过期导致的上述问题。因为除了root
用户以外,服务器上面的其他用户都是每隔三个月需要强制更换一下密码的。如果你再次期间并没有修改密码,则会导致密码失效之后无法登录的现象。
# 重启ssh服务使配置生效
$ sudo systemctl restart ssh.service