VNC 登录报错 Module is unknown

最后更新时间:2021-06-23 16:11:45

    现象描述

    使用 VNC 登录云服务器时,即使输入正确密码也无法成功登录,并提示 “Module is unknown” 错误。如下图所示:

    可能原因

    使用 VNC 登录会调用 /etc/pam.d/login 这个 pam 模块进行校验,而该模块会将 /etc/pam.d/system-auth 模块引入进行校验。/etc/pam.d/login 配置文件的内容,如下图所示:

    可能导致登录失败的原因是 system-auth 配置文件中的 pam_limits.so 模块的模块路径配置错误。如下图所示:

    说明

    pam_limits.so 模块的主要功能是限制用户会话过程中对各种系统资源的使用情况。模块路径需根据操作系统实际情况进行填写,若写错路径会导致无法找到对应的认证模块,导致登录认证报错。

    解决思路

    1. 参考 处理步骤,进入 system-auth 文件,并找到 pam_limits.so 模块路径配置。
    2. 修改 pam_limits.so 模块路径为正确配置即可。

    处理步骤

    1. 尝试使用 SSH 登录云服务器,详情请参见 使用 SSH 登录 Linux 实例
    2. 登录成功后,执行以下命令查看日志信息。
      vim /var/log/secure
      
      此文件一般用来记录安全相关的信息,其中大部分记录为用户登录云服务器的相关日志。如下图所示,可从信息中获取有 /lib/security/pam_limits.so 的报错信息。
    3. 依次执行以下命令,进入 /etc/pam.d 后,搜索日志中报错 pam 模块的关键字 /lib/security/pam_limits.so
      cd /etc/pam.d
      
      find . | xargs grep -ri "/lib/security/pam_limits.so" -l
      
      返回类似如下图所示信息,则表示 system-auth 文件中配置了该参数。
    4. 进入 system-auth 文件,修复 pam_limits.so 模块路径配置。
      例如,在64位的操作系统中,该模块路径可配置为绝对路径 /lib64/security/pam_limits.so,也可配置为相对路径 pam_limits.so