如何为不同的 OpenSSH 进程配置不同的身份验证方法

如何为不同的 OpenSSH 进程配置不同的身份验证方法

我在 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 支持。

相关内容