Ubuntu环境下能否通过FIDO2/WebAuthn实现SSH身份认证?
可行性说明
完全可行。OpenSSH从8.2版本开始原生支持FIDO2/WebAuthn身份认证,Ubuntu 20.04 LTS及以上版本默认搭载的OpenSSH版本已满足要求,无需依赖第三方工具就能实现用FIDO2硬件密钥替代传统密码或SSH密钥对的更安全认证方式。
所需工具
- FIDO2硬件密钥:符合FIDO2标准的设备,比如YubiKey 5系列、Google Titan Security Key、Feitian ePass等。
- OpenSSH客户端/服务器:Ubuntu默认自带,需确保版本≥8.2(可通过
ssh -V和sshd -V命令检查)。 - libfido2:部分场景下用于支持密钥生成,Ubuntu可通过包管理器安装(
sudo apt install libfido2-1)。
配置步骤
客户端(Ubuntu)
检查并更新OpenSSH客户端:
ssh -V # 版本低于8.2时执行更新 sudo apt update && sudo apt install openssh-client生成FIDO2 SSH密钥对:
运行命令生成绑定FIDO2密钥的ed25519-sk类型密钥(也可选ecdsa-sk):ssh-keygen -t ed25519-sk按提示插入FIDO2密钥、触摸密钥确认按钮,设置密钥存储路径(默认
~/.ssh/id_ed25519_sk),推荐设置密钥保护密码。上传公钥到目标服务器:
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub your-user@server-ip
服务器(Ubuntu)
检查并更新OpenSSH服务器:
sshd -V # 版本低于8.2时执行更新 sudo apt update && sudo apt install openssh-server修改SSH配置文件:
编辑/etc/ssh/sshd_config,确保以下配置项正确:sudo nano /etc/ssh/sshd_config确认内容:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 # 可选:FIDO2配置正常后,可禁用密码登录增强安全 # PasswordAuthentication no重启SSH服务生效:
sudo systemctl restart sshd
测试登录
插入FIDO2密钥,执行登录命令,按提示触摸密钥完成认证:
ssh -i ~/.ssh/id_ed25519_sk your-user@server-ip
额外提示
- 多客户端共用同一FIDO2密钥时,只需在每个客户端生成对应密钥对,上传公钥到服务器即可。
- 生成驻留密钥(
ssh-keygen -t ed25519-sk -O resident)可从FIDO2密钥导出公钥到其他客户端,无需重新上传。 - 确保服务器防火墙允许22端口的SSH连接。
内容的提问来源于stack exchange,提问作者Brett Sutton
相关产品推荐
相关产品推荐

