是否有PAM模块可以使用SSH质询响应对用户进行身份验证?
我正在尝试编写一个支持PAM的应用程序,它基本上具有与SSH连接相同的身份验证过程 . 我一直无法找到已经执行此操作的PAM模块(pam_ssh模块仍然是基于密码的),所以我一直在尝试编写自己的模块 .
但是,我找不到允许我以这种方式访问SSH的API . 即使使用sshd的PAM模块,也似乎没有一种干净的方式来验证SSH公钥 .
更明确一点,如果我为计算机上的给定用户提供SSH公钥(为简单起见,请考虑localhost),我想向该计算机上的该用户发送一个质询,以测试他们是否拥有该SSH密钥 . 有谁知道这样做的方法?
谢谢!
1 回答
您可以使用公钥加密一些随机数据,将其发送给用户,并声明他们能够使用私钥对其进行解密 . 如果您使用的是RSA密钥,则可以使用OpenSSL执行加密/解密 . 例如,
并验证客户端是否能够使用
random
的正确内容进行回复 .这些命令的灵感来自jass,您可以使用它来代替
ssh-keygen
openssl
.不幸的是,这不适用于Ed25519键; OpenSSH有自己的自定义格式,无法转换它们 .