我有一个充满用户帐户的 Postgresql 数据库,我想允许这些用户通过 ssh 访问服务器,仅使用公钥认证。
到目前为止,我已经在 Ubuntu 服务器上设置了以下部分:
- libnss-pgsql2将 NSS 连接到多个数据库视图,以 Unix 兼容格式列出我的用户
- libpam-pgsql允许使用这些相同的视图进行 PAM 身份验证
- sshdAuthorizedKeysCommand 使用脚本通过用户的公钥(仍然来自 postgresql 数据库)对用户进行身份验证。
有没有更简单解决这个问题的方法是什么?我无法正确设置 nss 配置(缺少文档和日志)。
感谢您的时间和帮助。
答案1
您可以使用 ssh 隧道允许用户连接到您的数据库。例如
ssh -L 本地端口:IP 地址/主机名:服务器端口用户@IP 地址/主机名。
这里的用户将是操作系统用户,因此最好提供 postgres 超级用户来连接。
但请记住,postgresql数据库服务器必须在该服务器上。
完成后,您可以使用简单的 psql 命令进行连接
psql -h 主机名/IP 地址 -p 端口 -U 用户 -d 数据库
答案2
我会将您的用户从 DB 转储到 LDAP 并将其加载到本地 LDAP。您可以轻松地自动更新。这将使您的操作系统能够从 LDAP 查询用户,并且它将更具可移植性 - 如果您想从 Linux 移出,libnss-pgsql2 并不存在于每个类 UNIX 系统上。你永远不知道 ;)