我在这里找到了说明:postressql-and-kerberos,并没有真正找到任何解释它更详细的东西.
krb_server_keyfile = '/var/lib/pgsql/data/krb5.keytab' krb_srvname = 'postgres'
我通过运行带有该信息的’kinit -kt’验证了这是正确的.我在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)…我看到的只是“致命:用户”fred“的GSSAPI身份验证失败.
好吧,’fred’是我的linux登录……“freddyboy”是我的用户原则.所以,像postgresql客户端那样的接缝并没有像它应该那样发送kerberos认证.我试过发送用户:
psql -l -h postgresserver.hotdog.com -U freddyboy
日志文件现在说“GSSAPI身份验证失败了用户”freddyboy“,但它显然仍然失败.我有一个’freddyboy’的postgres用户拥有一些数据库.我可以在本地登录,没有GSSAPI,但看起来不行远程安全地获取.
我怀疑我的客户端没有指定我想要用户GSSAPI.由于这只是一个客户端,conf文件不存在……所以这可能是一个问题,我想.
还有一点,kerberos服务器是ActiveDirectory.我看到一些迹象表明校长应该是大写的.我已经尝试过服务主体(“POSTGRES”)和我的用户主体“FREDDYBOY”,但仍然没有爱.
非常感谢任何帮助.我在客户端和服务器上使用Postgres 8.4.13.
弗雷德
如何做到这一点可以在Postgresql文档,20.3.3. GSSAPI Authentication方法中找到.
如果您已正确创建此主体,可能发生的情况是您的DNS反转无法正常工作.如果你在Postgres服务器的IP地址上运行主机,你应该得到postgresserver.hotdog.com.如果不这样做,Kerberos身份验证将不起作用.