我在 CentOS 7 上有一个 SFTP 服务器。在此服务器上,我运行 2 个具有不同配置的 OpenSSH 进程。
- 一个是用于管理目的的端口 22 上的标准 SSH
- 另一个只是端口 10022 上的 SFTP(配置中有此行
ForceCommand internal-sftp
)
现在,为了增加安全性,我还想拆分身份验证系统。端口 22 上的 SSH 应保持不变并验证本地系统用户,而端口 10022 上的 SFTP 应使用远程 freeradius 服务器。
如何配置在端口 10022 上运行的 OpenSSH 进程以使用另一个 PAM 配置?
答案1
OpenSSH 目前不支持更改 PAM 服务名称。它是在编译时定义的(作为 SSHD_PAM_SERVICE 宏),因此同一守护进程的所有实例都将使用相同的 PAM 配置,除非使用不同的名称重新编译。
还要注意的是,OpenSSH 仅仅认证通过 PAM 连接用户。sshd 要求经过身份验证的用户名必须通过 getpwnam() 映射到某个 Unix UID,这超出了 PAM 的范围(它是通过 nsswitch 模块完成的)——换句话说,您的 SFTP 用户实际上必须是系统用户以便 OpenSSH 接受他们。
因此,您需要设置 LDAP 用户目录等,以使您的用户存在于操作系统中。此时,您将不再需要两个实例 - 您将能够仅配置 PAM 以根据组成员身份跳转到不同的模块,例如成员的本地密码staff
与其他人使用的 RADIUS 身份验证。
如果那不是一个选项,您可能需要使用备用 SFTP 服务器,例如 ProFTPd 实际上具有 SFTP 支持。