我正在尝试使用 SSH 登录 OpenSSH Linux 服务器上,该服务器上不存在的 unix 登录名将使用 PAM 模块 pam_exec 通过外部 web 服务进行身份验证,并在首次登录时创建一个本地帐户。
当登录不存在时,OpenSSH 会向 pam_exec 发送一个虚假密码,导致 web 服务上的身份验证失败。
即使登录不存在,我怎样才能将真实密码传递给 pam_exec?
答案1
选项 1:你需要让 OpenSSH 认为用户做存在。在 Linux 上使用 glibc 时,你可以编写一个自定义的 nsswitch 模块,它总是返回一些任何用户名的信息(可能检查 sshd 是否是调用者),类似于现有模块 libnss_ldap、libnss_systemd、libnss_cache 等。nsswitch 模块不需要“创建”帐户,只需为其报告有效的 UID。
选项 2:修补 sshd 以不发送虚假密码。