我按照 digital Ocean how-to-install-postgresql-on-ubuntu-20-04-quickstart 的说明安装了它:
% sudo apt install postgresql postgresql-contrib
krb_server_keyfile = /etc/krb5.keytab
我还在 psql 中做了一个“全部显示”,除了我在 postgresql.conf 中配置的之外,没有看到任何暗示它的东西
这些是我在日志中看到的错误:
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres LOG: accepting GSS security context failed
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres DETAIL: Unspecified GSS failure. Minor code may provide more information: Key table entry not found
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres FATAL: GSSAPI authentication failed for user "postgres"
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres DETAIL: Connection matched pg_hba.conf line 114: "host postgres postgres 172.31.93.176/24 gs\
s include_realm=0"
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres LOG: accepting GSS security context failed
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres DETAIL: Unspecified GSS failure. Minor code may provide more information: Key table entry not found
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres FATAL: GSSAPI authentication failed for user "postgres"
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres DETAIL: Connection matched pg_hba.conf line 114: "host postgres postgres 172.31.93.176/24 gs\
s include_realm=0"
首先,让我添加更多关于观察到此问题的环境的描述。
这个优秀的系列文章描述了设置 kerberos 和 postgresql
使用 Kerberos 的 PostgreSQL GSSAPI 身份验证
如果您在 AWS 中执行此操作,您还应该设置弹性 IP 地址(以便您可以停止和启动服务器)。我还为主机名设置了 rt53,并将它们映射到您设置的弹性 IP 地址。
注意:就我而言,我使用的是 postgresql v13,在最初失败后,我按照postgressql 上的这些说明安装 postgresql。
你会认为这就足够了。但是,如果您不调整 /etc/hosts 文件以便拥有服务器条目(正如 David 在他的示例中所做的那样,那是在“内部”硬件上),您会收到以下错误:
但是,如果您在客户端计算机上的 /etc/hosts 文件中为 kerberos 和 postgresql 计算机添加条目(使用您之前设置的弹性 IP 地址),一切正常。
注意:这确实需要您使用 keytab 文件正确配置 postgres。对于 postgresql 的 v13,我将其放入 /etc/postgresql/13/main/conf.d/krb5.keytab并调整 postgresql.conf 文件(在 /etc/postgresql/13/main 中),使其具有类似的条目这:krb_server_keyfile = '文件:/etc/postgresql/13/main/conf.d/krb5.keytab
非常感谢@jjanes 在对我最初问题的评论中让我走上了正确的道路。