首页 文章

PAM身份验证pgAdmin远程失败,但在本地工作

提问于
浏览
1

我一直在尝试在Red Hat服务器上使用PAM配置postgresql,以便我可以通过pgAdmin远程访问服务器并使用PAM进行本地(服务器)身份验证 .

我编辑了pg_hba.conf文件并更改了相应的行:

host postgres all 0.0.0.0/0 md5

并添加了这个:

host    pam_testing       all  0.0.0.0/0   pam    pamservice=postgresql95

此外,我使用与用于使用putty登录的用户名相同的用户名创建数据库用户(无密码,只需创建用户xxx)

当我尝试使用pgAdmin远程登录到postgres数据库(使用md5)和我的数据库用户时,一切运行顺利 .

但是当我尝试使用我的服务器用户名(我使用putty通过ssh登录)连接(也是远程,使用pgAdmin)到pam_testing数据库并给出密码时,我收到以下错误:

连接到服务器时出错:FATAL:用户XXX的PAM身份验证失败

但!当我通过putty连接到本地登录到pam_testing时,它可以工作!我的系统用户登录并进行身份验证,没有任何问题 . 它只发生在用户身上,我使用create user添加到数据库中 .

我猜它一定是某种身份验证问题(可能是服务器?它属于公司,我不知道它使用的是什么其他身份验证方法),但我不确定 . 有任何想法吗?

系统:Red hat 6.8,Postgresql:9.5

提前致谢!

1 回答

  • 0

    systemctl | grep unix_chkpwd 如果你看到这样的线条

    unix_chkpwd[13081]: check pass; user unknown
    unix_chkpwd[13081]: password check failed for user (<username>)
    

    然后你遇到了同样的问题 .

    要解决此问题,您需要为 /etc/shadow 文件提供 postgres 用户读取权限 . 您可以通过acl: setfacl -m g:postgres:r /etc/shadow 执行此操作,或者通过创建某个组,为其授予权限,然后向其添加 postgres . 然后做 systemctl restart postgresql.service .

    使用pam进行身份验证的基本机制在this post中描述 . 关键时刻如下: unix_chkpwd 在想要对某人进行身份验证的进程的uid下运行,因此如果它不是root用户(并且使用 /etc/shadow ,我相信这是常见情况),则无法完成其工作 .

相关问题