我试图通过GSSAPI获取postgres和kerberos,一起工作。 在这一点上有麻烦。 这对我并不是两个技术的新手都没有帮助。 我有两个postgres和kerberos单独工作,并使用它们(但不是在一起)。
我在这里find了说明: postressql-and-kerberos ,并没有真正发现任何解释它更详细的东西。
我在postgresql.conf文件中设置了这两行:
krb_server_keyfile = '/var/lib/pgsql/data/krb5.keytab' krb_srvname = 'postgres'
我已经通过运行带有该信息的'kinit -kt'来validation这是正确的。 我在pg_hba.conf文件中添加了这两个条目:
# TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 10.0.1.0/24 gss include_realm=0 krb_realm=HOTDOG.REALM.COM
我重新启动服务器并尝试通过远程客户端连接…
kinit freddyboy <enter password>
这是成功的,我可以看到详细信息,如果我做一个“klist”。
然后我尝试连接到postgres,通过:
psql -l -h postgresserver.hotdog.com
我收到一个错误,指出:
pgql: GSSAPI continuation error: Unspecified GSS failure. Minor code may provide more information GSSAPI continuation error: Server not found in Kerberos database
如果我查看服务器日志文件(postgresql-Tue.log)…我看到的全部是“FATAL:GSSAPI身份validation失败的用户”fred“。
那么,'弗雷德'是我的Linuxlogin…“Freddyboy”是我的userprincipal。 所以,它的接缝像postgresql客户端没有发送Kerberosauthentication,因为它应该。 我试图发送用户:
psql -l -h postgresserver.hotdog.com -U freddyboy
日志文件现在说“GSSAPI身份validation失败的用户”freddyboy“,但它显然,仍然失败。我有一个postgres用户'freddyboy'拥有一些数据库。我可以本地login罚款,没有GSSAPI,但似乎无法获得远程和安全。
我很怀疑,我的客户没有指定我想要用户GSSAPI。 由于这只是一个客户端,conf文件不存在…所以这可能是一个问题,我想。
还有一点,kerberos服务器是ActiveDirectory。 我看到一些迹象表明校长应该是大写的。 我尝试过让服务负责人(“POSTGRES”)和我的用户负责人“FREDDYBOY”,但还是没有爱。
任何援助非常感谢。 我在客户端和服务器上使用PostgreSQL 8.4.13。
弗雷德
错误提示您没有为Postgres服务器创build服务主体。 这是存储在服务器本身的krb5.keytab文件中的主体。
如何做到这一点可以在PostgreSQL文档20.3.3中find。 GSSAPI身份validation方法。
如果您已经正确创build了此主体,则可能发生的情况是您的DNS逆转无法正常工作。 如果你在Postgres服务器的IP地址上运行host ,你应该返回postgresserver.hotdog.com 。 如果您不这样做,Kerberos身份validation将不起作用。