使用公钥的OpenSSH和PAMauthentication

我正在寻找一种使用存储在数据库(MongoDB)中的公钥来validation用户身份的方法。 类似的问题通常会导致build议安装一个修补版本的OpenSSH( https://github.com/wuputahllc/openssh-for-git ),这个版本可以通过一个db进行validation(GitHub使用OpenSSH的补丁版本)。

我看到有一个PAM模块通过MySQL进行身份validation,但是它假设用户名/密码身份validation。 我想知道是否可以使用某种PAM模块对服务器使用公钥进行身份validation。

编辑:我需要它的所有用户将通过'混帐'用户名连接的混帐服务器。 每个用户都没有特定的用户名。

AuthorizedKeysCommand是你需要的。 这将需要一个体面的新版本的OpenSSH可用,你需要编写一个封装命令,从MongoDB数据库获取密钥,但不需要你修补OpenSSH。

并链接更多关于AuthorizedKeysCommand的详细信息。

SSH公钥authentication不是通过PAM实现的。 它实际上绕过了PAM auth堆栈(但只有auth ),许多pipe理员忽视了这一点。

除了支持AuthorizedKeyCommand版本外(如Florin的回答中所述),扩展SSH公共密钥validation的唯一方法是修补守护进程(公钥查找)或客户端(私钥查找)。

有很多方法可以通过PAM扩展authentication选项,但修改SSH公钥身份validation的工作方式不是其中之一。