使用第三方SSH客户端登录Linux实例时,提示“Access denied”错误怎么办?

本文介绍使用第三方SSH客户端登录Linux实例时,提示“Access denied”错误的问题原因和解决方案。

问题现象

第三方SSH客户端登录Linux实例时,提示“Access denied”错误。执行cat /var/log/secure查看登录日志,发现会出现类似如下信息。

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.

问题原因

该问题通常是由于ECS实例内SSH远程登录配置文件(/etc/ssh/sshd_config)中启用了用户登录控制参数,对可登录用户进行限制所致,用户登录控制参数说明如下。

  • AllowUsers:允许登录的用户白名单,只有该参数标注的用户可以登录。

  • DenyUsers:拒绝登录的用户黑名单,该参数标注的用户都拒绝登录。

  • AllowGroups:允许登录的用户组白名单,只有该参数标注的用户组可以登录。

  • DenyGroups:拒绝登录的用户组黑名单,该参数标注的用户组都拒绝登录。

拒绝策略优先级高于允许策略,具体说明如下。

  • 如果AllowUsers和DenyUsers参数包含了同一个用户,因拒绝策略优先,所以该用户无法登录。

  • 如果AllowUsers中的用户在DenyGroups用户组中,因拒绝策略优先,所以该用户无法登录。

解决方案

您可以修改SSH远程登录配置文件(/etc/ssh/sshd_config)中用户登录控制参数,以解决该问题。

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,查看sshd_config文件。

    cat /etc/ssh/sshd_config

    系统显示类似如下,表示拒绝test用户登录。

    AllowUsers root test
    DenyUsers test
    DenyGroups test
    AllowGroups root
  3. 修改用户登录控制参数。

    1. 打开SSH配置文件。

      vi /etc/ssh/sshd_config
    2. 根据业务需要,修改用户登录控制参数。

      如下所示,在策略配置前添加#,取消用户访问控制,以确保相关用户能够正常登录。

      #AllowUsers root test
      #DenyUsers test
      #DenyGroups test
      #AllowGroups root
    3. 按Esc键,输入:wq保存修改。

  4. 执行如下命令,重启SSH服务。

    systemctl restart sshd.service
  5. 重新登录Linux实例,确保可以正常登录。