无法使用SSH登录远程主机


俗话说得好,好记性不如烂笔头!

无法使用SSH登录远程主机


  • 今天用户方反馈,他们新部署的服务无法使用了。按道理来说不应该的,除非出现断电、网络故障或者升级系统等问题。随即远程登录对方主机,连接内部服务器,看看到底是什么问题导致的。但是,通过 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 服务相关参数,可以对登录的用户或用户组进行限制。

    1. AllowUsers:允许登录的用户白名单; 只有该参数标注的用户可以登录
    2. DenyUsers:拒绝登录的用户黑名单; 该参数标注的用户都拒绝登录
    3. AllowGroups:允许登录的用户组白名单; 只有该参数标注的用户组可以登录
    4. DenyGroups:拒绝登录的用户组黑名单; 该参数标注的用户组都拒绝登录
  • 需要注意的是,拒绝策略优先级高于允许策略

    1. 如果 AllowUsersDenyUsers 参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。
    2. 如果 AllowUsersDenyGroups 参数包含了同一个用户,则拒绝策略优先,所以最终该用户还是无法登录。
  • 通过修改对应参数,重启 ssh 服务使配置生效。但是,我们通过远程发现 xxx 用户还是无法通过 ssh 命令登录,很是奇怪!后来通过,查看该用户的密码信息才发现,是该用户的密码已经过期导致的上述问题。因为除了 root 用户以外,服务器上面的其他用户都是每隔三个月需要强制更换一下密码的。如果你再次期间并没有修改密码,则会导致密码失效之后无法登录的现象。

# 重启ssh服务使配置生效
$ sudo systemctl restart ssh.service

文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !