我们有一个客户端内联网,其中客户端用户凭据存储在 mysql 数据库中。
我们现在正尝试为每个客户端启用对我们其中一台服务器的 SSH 访问 - 其中身份验证将来自我们现有的数据库。
任何帮助都是极好的。
答案1
OS X 确实看起来使用了 PAM。在这种情况下,你应该能够使用PAM-MySQL执行您想要的任何类型的身份验证。开箱即用的 OS X 使用非常简单的 sshd PAM 配置:
$ cat /etc/pam.d/sshd # sshd:验证账户密码会话 需要身份验证 pam_nologin.so auth 可选 pam_afpmount.so 身份验证充分 pam_securityserver.so 身份验证充分 pam_unix.so 身份验证需要 pam_deny.so 帐户需要 pam_securityserver.so 需要密码 pam_deny.so 会话需要 pam_launchd.so 会话可选 pam_afpmount.so
我之前没有设置过 PAM-MySQL,但假设它与其他外部数据库 PAM 模块类似,那么将有一个配置文件可用于选择数据库凭据、应使用哪些表等。然后,您将在 中的行auth sufficient pam_mysql.so
前插入。pam_unix.so
/etc/pam.d/sshd
从理论上来说,这就是你所需要的全部。
答案2
可能有几种方法可以做到这一点:
- 设置一个 Open Directory 主服务器,将你的服务器绑定到它(或者该服务器可能是 OD 主服务器),并为你的客户内联网编写一些钩子,以便在 OD 发生变化时添加/远程/更新用户
- 编写一个目录服务插件,安装在你的服务器上,与你的 MySQL 数据库进行通信
对于第一个选项,请参阅 Apple 的Mac OS X 服务器文档,尤其是与 Open Directory 相关的。有一个dscl
命令可以从脚本运行,以在 Open Directory 中添加/删除/更新条目。
有关目录服务选项,请参阅 Apple 的目录服务文档,尤其是 编写开放目录插件文档。
可能还有其他方法,但我首先想到的是这两种方法。