You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的映射文件:

  1. 创建映射文件/etc/yubikey_mappings,格式为用户名:YubiKey令牌ID(令牌ID是YubiKey输出的前12个字符):
    your_username:cccccccccccc
    
  2. 在system-auth的auth部分添加一行(建议放在pam_unix.so之前,实现双因素认证;如果要替代密码,可调整顺序和控制标志):
    auth        sufficient    pam_yubico.so id=你的ClientID key=你的API密钥 authfile=/etc/yubikey_mappings
    

模式二:挑战响应认证

这种模式不需要联网,更适合离线场景,步骤如下:

  1. 先用YubiKey Manager给YubiKey配置挑战响应槽(比如槽2);
  2. 在system-auth的auth部分添加:
    auth        sufficient    pam_yubico.so mode=challenge-response chalresp_path=/var/yubico
    
  3. 创建/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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:06:13