什么是 FIDO2 安全密钥?
FIDO2 是一个开放认证标准,旨在提供更安全的密码替代方案。在 SSH 认证场景中,FIDO2 安全密钥(如 YubiKey、Titan Security Key 等)可以存储私钥,实现硬件级别的私钥保护。
与传统 SSH 密钥相比,FIDO2 安全密钥具有以下优势:
- 私钥永不离开硬件设备:即使计算机被攻破,攻击者也无法获取私钥
- 需要物理按键:每次认证都需要用户触摸密钥确认,防止远程恶意使用
- 支持 PIN 保护:可设置 PIN 码作为额外验证层
- 支持常驻密钥:密钥可存储在设备上,在多台机器间共享使用
支持的密钥类型
OpenSSH 支持两种 FIDO2 密钥类型:
ecdsa-sk:基于 ECDSA 曲线的安全密钥ed25519-sk:基于 Ed25519 的安全密钥(推荐)
生成 FIDO2 SSH 密钥
基本生成命令
|
|
生成过程中需要:
- 按提示触碰安全密钥的金属感应区
- 输入设备 PIN 码(如已设置)
常用生成选项
1. 创建常驻密钥(可在多台设备使用)
|
|
常驻密钥存储在安全密钥内部,可通过 ssh-add -K 从其他机器加载。
2. 禁用触控要求(不推荐)
|
|
⚠️ 警告:禁用触控会降低安全性,攻击者可能在用户不知情时使用密钥。
3. 要求 PIN 验证
|
|
此选项要求每次签名时都进行 PIN 验证(而非仅首次)。
4. 指定应用字符串
|
|
加载常驻密钥
如果使用常驻密钥,在新设备上需要先加载:
|
|
查看已加载的密钥:
|
|
输出示例:
|
|
配置 SSH 使用 FIDO2 密钥
1. 添加公钥到服务器
将公钥内容(~/.ssh/id_ed25519_sk.pub)添加到服务器的 ~/.ssh/authorized_keys 文件:
|
|
2. 连接到服务器
|
|
连接时会自动提示触碰安全密钥。
3. 指定密钥文件
|
|
高级配置
在 SSH 配置文件中使用
编辑 ~/.ssh/config:
|
|
FIDO2 密钥与 SSH 证书
FIDO2 密钥也可以用于证书认证:
|
|
故障排查
1. 设备未被识别
|
|
如显示 Could not add a smartcard key,可能需要安装相关驱动。
2. PIN 码锁定
多次输入错误 PIN 会锁定设备。请查阅设备说明书执行恢复流程。
3. 权限问题
确保密钥文件权限正确:
|
|
安全建议
- 启用 PIN 保护:为安全密钥设置 PIN 码
- 使用常驻密钥备份:将重要密钥设为常驻,防止密钥丢失
- 生成多个密钥:为不同用途生成独立密钥
- 妥善保管:安全密钥丢失意味着访问权限丢失
总结
FIDO2 安全密钥为 SSH 认证提供了企业级的安全保障。通过硬件级别的私钥保护和触控验证,即使计算机被入侵,攻击者也无法伪造你的身份。对于管理敏感服务器或需要高安全标准的场景,FIDO2 密钥是理想选择。