硬件令牌(如YubiKey)通过FIDO2/WebAuthn提供高安全SSH登录:OpenSSH 8.2+原生支持,需生成ecdsa-sk密钥、部署公钥、禁用密码认证,并强化日志与审计;丢失令牌不可恢复,须预配备用。

高价值目标需要比软件OTP更难复制、更难远程劫持的验证方式,硬件令牌(如YubiKey、SoloKeys、Nitrokey)提供基于FIDO2/WebAuthn或U2F标准的物理密钥认证,其私钥永不离开设备、无法被软件提取,且需物理接触或触摸确认,天然抵御钓鱼、中间人和远程凭证窃取。
确认SSH服务支持FIDO2公钥认证
OpenSSH 8.2+ 原生支持FIDO2安全密钥作为公钥认证载体。检查当前版本:
ssh -V若低于8.2,需升级系统或编译新版OpenSSH。macOS Ventura及更新系统默认OpenSSH已满足;Linux发行版建议使用官方源或从openssh.com获取最新稳定版。
生成并注册硬件令牌密钥对
插入YubiKey(或其他兼容FIDO2设备),运行以下命令生成专属密钥(自动调用设备完成签名):
ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk -C "yubikey-admin@prod"执行时需短按令牌触点完成生物/物理确认。生成后得到两个文件:
- id_ecdsa_sk:私钥句柄(实际密钥不出设备,仅存引用)
- id_ecdsa_sk.pub:可公开分发的公钥,用于服务器端部署
可选增强:添加验证策略限制使用场景,例如仅允许在特定主机上签名:
ssh-keygen -t ecdsa-sk -O verify-required -f ~/.ssh/id_ecdsa_sk部署公钥至目标服务器并禁用弱认证路径
将公钥内容复制到目标服务器对应用户的~/.ssh/authorized_keys中(一行,不换行):
关键加固步骤:编辑/etc/ssh/sshd_config,确保以下配置生效:
- PubkeyAuthentication yes
- AuthenticationMethods publickey(强制仅允许公钥,关闭密码+键盘交互等备用通道)
- PasswordAuthentication no
- PermitEmptyPasswords no
- AllowUsers 或 AllowGroups 显式限定可登录账户(避免通配)
重启服务前先测试新密钥能否登录(保留另一终端会话以防锁死):
ssh -i ~/.ssh/id_ecdsa_sk user@server启用硬件级登录审计与防重放保护
FIDO2密钥本身具备内置计数器和随机挑战响应机制,但需配合服务端日志强化溯源能力:
- 启用OpenSSH详细日志:
LogLevel VERBOSE(记录密钥ID、算法、认证结果) - 在
/etc/ssh/sshd_config中添加:ForceCommand /usr/local/bin/ssh-audit-wrapper(指向自定义脚本,记录时间、IP、密钥指纹哈希) - 搭配
faillock或pam_faildelay设置失败尝试延迟,抑制暴力试探
注意:硬件令牌无“恢复码”概念,丢失即永久失效。务必预先注册至少两枚同型号令牌,并将第二枚离线保管于保险箱中。

















