潘布利茨用于BLYTZ PAM身份验证的C++库在某些情况下可能会遇到命名冲突的问题,特别是在将其用作SSH PAM后端时。这种冲突主要发生在libssh和FreeBSD的OpenSSH实现之间。具体来说,这两个库都使用了名为ssh_key_new的函数,而由于FreeBSD的库在优先级上高于libssh的实现,导致libssh中的相关功能可能被覆盖。

为了解决这个问题,我目前采取的解决方法是手动重命名libssh中的冲突函数,并重新编译库。这种方法虽然能暂时解决问题,但并不是一个长久之计,只能算作概念验证。如果你对PAM身份验证库的实现感兴趣,可以参考蜜蜂PAM身份验证微服务源码PAM sys Rust FFI绑定到Linux可插拔身份验证模块PAM源码,这些资源提供了更多的实现细节和源码供你参考。

使用诸如pam_fido2这样的Linux安全无密码身份验证源码,也能为你提供一种避免传统SSH密钥冲突的方法,进一步增强系统的安全性。