我有一个PHP应用程序,其中有用户名和公共SSH密钥。我想使用这些帐户作为openssh的用户后端。
我想我需要使用pamúexec和一个PHP/Bash脚本。我已经编写了一个可以在CLI中执行的php脚本(shebang设置了一个php可执行文件的env)。如果我需要用bash脚本来代替它来访问环境变量,我可以这样做。脚本当前将用户名作为其第一个也是唯一的参数,如下所示:
/opt/scripts/my-auth-script.php user_to_look_for
脚本将成功退出(用户存在)或退出1(如果不存在)。它目前回声正常或失败,但我可以很容易地关闭。
所以,我的问题是,在查找用户帐户的实际主机系统之前,如何让pamòexec调用我的脚本来查找用户帐户?
最佳答案
我已经成功了。方法是在sshd_config中设置openssh的AuthorizedKeysCommand和authorizedKeyuser设置。有一个警告,GITHUB和其他人通过用户之间共享的单个登录用户提供SSH作为服务的原因是被调用的用户必须被登录的系统解决,所以它们在本地存在,或者用户DB必须连接到像LDAP这样的远程源,然后还必须将其集成到应用程序中。
不过,解决这个问题的方法是AuthorizedKeyCommand可以使用参数%u表示用户名,在本例中还可以使用%k表示密钥,或者使用%f表示密钥的sha256指纹。然后,该脚本可以忽略给定的通用用户名,然后检查数据库中的密钥或指纹是否匹配。如果我们找到了它,我们就有了该密钥的用户并成功地进行了身份验证。如果不是的话。