使用 pam_exec for openssh 的帐户的外部脚本

External script for account using pam_exec for openssh

我有一个 PHP 应用程序,其中包含用户名和 Public SSH 密钥。我想使用这些帐户作为 openssh 的用户后端。

我想我需要使用 pam_exec 和一个 PHP/Bash 脚本。我写了一个 php 脚本,我可以在 CLI 上执行它(shebang 设置了一个 php 可执行文件的环境)。如果我需要将它包装在 bash 脚本中而不是访问环境变量,我可以这样做。该脚本目前将用户名作为其第一个也是唯一的参数,如下所示:

/opt/scripts/my-auth-script.php user_to_look_for

脚本将在成功(用户存在)时退出 0,否则将退出 1。它目前也回显 OK 或 Failed 但我可以轻松地将其关闭。

所以,我的问题是,在查看用户帐户的实际主机系统之前,如何让 pam_exec 调用我的脚本来查找用户帐户?

我已经开始工作了。方法是在sshd_config中设置openssh的AuthorizedKeysCommand和AuthorisedKeyUser设置。有一个警告,github 和其他人通过在客户之间共享的单个登录用户提供 ssh 作为服务的原因是被调用的用户必须可由登录系统解析,因此它们必须存在于本地,或者用户数据库必须连接到远程源,如 LDAP,这也必须集成到应用程序中。

解决这个问题的方法是,AuthorizedKeyCommand 可以采用参数,%u 用于用户名,在这种情况下,%k 用于密钥或 %f 用于密钥的 sha256 指纹。然后,该脚本可以忽略给它的通用用户名,然后只检查数据库以查找密钥或指纹的匹配项。如果我们找到它,我们就有了该密钥的用户和成功的身份验证。如果不是我们不。