用于重新映射 SSH 用户的 PAM 模块



我正在编写一个ssh模块,该模块从ab ssh用户那里获取用户名和密码,使用远程服务器对其进行身份验证,然后使用pam_set_item将每个远程用户重新映射到同一本地用户。我有pam_module可以做到这一切。

但是,sshd 仍然调用 getpwnam 以获取原始用户名(本地未知(,并且登录失败。

我错过了什么?

我遇到了一种机制,通过 libnss https://github.com/donapieppo/libnss-ato 的自定义扩展来启用此行为 - 它会将所有用户映射到某个预定义的用户。但是,(1( 您必须使用某些外部身份验证机制或您自己的 pam 模块来执行身份验证,(2( 配置此机制时所有用户管理操作都不起作用,(3( 如果您有多个交互式登录会话,则会话之间没有安全性。它对我来说效果很好,因为我不需要交互式登录。

此外,如果您更改/etc/nsswitch,您可能需要重新启动系统才能生效。解决方法是安装 nscd 并在 nsswithch 更改后与 sshd 一起重新启动它。这是额外的麻烦,但它简化了调试。

我只是在几分钟前偶然发现它时传达这一点。这表明OpenSSH无法处理您尝试做的事情(即在PAM中更改用户名(。这是2011年的一篇文章,但会解释你所看到的。

OpenSSH中实际上没有代码可以调整用户名 它从存储它的内部变量中的连接中获得 这后来用于对系统的其他调用。

原始的帕姆列表帖子

另请参阅 - 错误报告

最新更新