我想允许某些用户仅使用 SFTP 而不使用 SSH。另外,我不希望这些 SFTP 用户的 ID 和密码存储在/etc/passwd
文件中。我希望他们的 ID 和密码详细信息存储在单独的密码文件中。我将使用该pam_pwdfile
模块进行 SFTP 身份验证。
但问题是我无法同时使用pam_unix
和pam_pwdfile
来验证 SSH 和 SFTP 用户。我该怎么做?
任何想法?
答案1
我遇到了类似的问题。我找到的解决方案是:
- 创建一个身份验证独立库
- 使用 pam 模块中的身份验证库
- 创建自定义 NSS 插件(来自此https://github.com/donapieppo/libnss-ato)并检查身份验证库以查看要映射到哪个本地用户帐户(例如:“ftp_restricted_user”或“full_access_user”,具体取决于用户名)
因此,基本上,当用户尝试使用 ssh 或 sftp 登录时,会调用 NSS 插件并将请求的用户 ID 映射到本地 unix 帐户。然后 PAM 开始发挥作用,只是为了检查凭证是否正确。
希望这可以帮助..
答案2
您可能能够使用 ProFTPD 的mod_sftp
模块。它允许 SFTP 但不允许 SSH2 访问,并使用 ProFTPD 的多个身份验证后端(这意味着您的用户数据可以存储在备用密码文件、SQL 数据库、LDAP 目录中,ETC),并不一定需要使用PAM。