Fedora系统中如何配置YubiKey对应的PAM认证?
在Fedora 27上配置YubiKey 4本地认证的问题排查与解决思路
我之前在Ubuntu上通过修改/etc/pam.d/common-auth配合libpam-yubico包,轻松实现了YubiKey的本地认证,但换到Fedora 27之后发现完全不一样——这里根本没有common-auth这个文件!按照某篇过时wiki的指引改了/etc/pam.d/login,不管是用令牌OTP模式还是挑战响应模式都没效果,后来才发现问题可能出在配置文件选错或者修改没真正生效上,下面分享我踩坑后的解决思路:
1. 先确认正确安装Fedora对应的PAM模块
Fedora里的YubiKey PAM包不是Ubuntu的libpam-yubico,而是pam_yubico,先确保安装到位:
sudo dnf install pam_yubico
2. 搞懂Fedora的PAM配置逻辑
Fedora并没有common-auth这类通用配置文件,而是用/etc/pam.d/system-auth作为大多数认证服务的通用规则集合,比如login、su、gnome-shell这些服务都会include这个文件。之前单独改login没生效,大概率是因为服务实际用的是system-auth里的规则,单独修改login被覆盖了。
3. 配置对应的PAM规则
根据你要使用的认证模式,修改/etc/pam.d/system-auth的auth段:
模式一:OTP令牌认证
这种模式需要YubiKey生成一次性密码,你需要先在YubiCloud注册获取Client ID和API密钥,然后创建用户与令牌ID的映射文件:
- 创建映射文件
/etc/yubikey_mappings,格式为用户名:YubiKey令牌ID(令牌ID是YubiKey输出的前12个字符):your_username:cccccccccccc - 在
system-auth的auth部分添加一行(建议放在pam_unix.so之前,实现双因素认证;如果要替代密码,可调整顺序和控制标志):auth sufficient pam_yubico.so id=你的ClientID key=你的API密钥 authfile=/etc/yubikey_mappings
模式二:挑战响应认证
这种模式不需要联网,更适合离线场景,步骤如下:
- 先用YubiKey Manager给YubiKey配置挑战响应槽(比如槽2);
- 在
system-auth的auth部分添加:auth sufficient pam_yubico.so mode=challenge-response chalresp_path=/var/yubico - 创建
/var/yubico目录并设置权限:sudo mkdir /var/yubico sudo chown your_username:your_username /var/yubico
4. 验证配置是否生效
- 最简单的测试方式:用
su - your_username切换用户,看是否触发YubiKey的认证提示; - 如果还是没效果,去查看PAM日志找错误:
journalctl -u systemd-logind.service或者/var/log/secure,里面会记录PAM模块加载、认证失败的具体原因,比如模块找不到、配置参数错误、权限问题等。
内容的提问来源于stack exchange,提问作者Index
相关产品推荐
相关产品推荐

