基于任意 PAM 模块的身份验证

基于任意 PAM 模块的身份验证

我想允许某些用户仅使用 SFTP 而不使用 SSH。另外,我不希望这些 SFTP 用户的 ID 和密码存储在/etc/passwd文件中。我希望他们的 ID 和密码详细信息存储在单独的密码文件中。我将使用该pam_pwdfile模块进行 SFTP 身份验证。

但问题是我无法同时使用pam_unixpam_pwdfile来验证 SSH 和 SFTP 用户。我该怎么做?

任何想法?

答案1

我遇到了类似的问题。我找到的解决方案是:

  1. 创建一个身份验证独立库
  2. 使用 pam 模块中的身份验证库
  3. 创建自定义 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。

相关内容