我有一个PHP应用程序,其中包含用户名和公共SSH密钥。我想将这些帐户用作openssh的用户后端。
我想我需要使用pam_exec和PHP / Bash脚本。我已经编写了一个可以在CLI执行的php脚本(shebang设置了php可执行文件的env)。如果我需要将其包装在bash脚本中而不是访问环境变量,我可以这样做。该脚本目前使用用户名作为其第一个也是唯一的参数,如下所示:
/opt/scripts/my-auth-script.php user_to_look_for
脚本将在成功时退出零(用户存在),否则退出1。它目前也回应OK或Failed,但我可以很容易地将其关闭。
所以,我的问题是,在查看用户帐户的实际主机系统之前,如何让pam_exec调用我的脚本来查找用户帐户?
答案 0 :(得分:0)
我已经开始工作了。执行此操作的方法是在sshd_config中设置openssh的AuthorizedKeysCommand和AuthorisedKeyUser设置。有一点需要注意,github和其他人通过在客户之间共享的单个登录用户提供ssh作为服务的原因是被调用的用户必须能够被登录的系统解析,因此他们在本地存在muxt,或者用户数据库必须连接到LDAP之类的远程源,然后必须将其集成到应用程序中。
解决这个问题的方法是,AuthorizedKeyCommand可以获取参数,%u用于用户名,在这种情况下,%k表示密钥,%f表示密钥的sha256指纹。然后,该脚本可以忽略它给出的通用用户名,然后只需检查数据库中的密钥或指纹匹配。如果我们找到它,我们就拥有该密钥的用户并成功进行身份验证。如果不是,我们不要。