我正在尝试寻找一种解决方案,允许用户使用提供的用户名/密钥组合(存储在 Wordpress 安装的 MySQL 数据库中)通过 SFTP 连接到服务器,而无需不断保持两个或多个独立的系统同步。
我在 Stackoverflow 上问了这个问题,但我觉得在这里回答会更好。
这是 MySQL 查询,它获取两列,其中包含用户名和 api 密钥,用户将其输入到他们的 SFTP 客户端作为密码:
SELECT m.meta_value, u.user_login
FROM wp_users AS u, wp_usermeta AS m
WHERE m.user_id = u.ID AND m.meta_key = "user_apikey";
就文件系统而言,每个用户都有一个与用户名同名的文件夹,都位于同一目录中。此用户的文件夹可能已经存在,也可能不存在。当用户与服务器建立 SFTP 连接时,经过身份验证后,应该只向他们显示该文件夹的内容。
希望有人知道这个问题的简单解决方案。我唯一的限制是它必须在 CentOS 机器上运行,但我对任何工具和语言都持开放态度。
答案1
您可以将 PAM 和名称服务交换机 (NSS) 的后端替换为 MySQL 后端。您将需要pam-mysql和libnss-mysql。
仅仅让一个应用程序使用 MySQL 可能有点小题大做,但我认为我应该提一下。