主要观点:新的硬件安全密钥(如 Yubikey、Nitrokey、Titan 等)支持 FIDO2,OpenSSH 也支持,这对 SSH 使用更方便且更安全,实际 SSH 私钥无法被访问,即使电脑被攻击也难以使用账号登录。还介绍了 SK 相关知识,包括生成密钥对、与 ssh-agent 配合使用、使用多个 SK 等,以及 resident 和 non-resident 密钥的区别等,同时提到了在各种场景下的应用和注意事项。
关键信息:
- 支持 FIDO2 的硬件安全密钥:Yubikey 5 系列较受欢迎,Nitrokey 3 系列、Google Titan 等也可,它们可用于 SSH 等多种场景。
- FIDO2 密钥基本原理:非驻留密钥的 SSH 私钥不在 SK 或电脑中,只能在 SK 内用独特密钥解密,SK 需物理触摸才能进行操作,实际 SSH 私钥无法访问。
- 生成密钥对:
ssh-keygen -t ed25519-sk
或ssh-keygen -t ecdsa-sk
。 - 与 ssh-agent 配合:可
ssh-add
SK 密钥,ssh -A
的代理转发更安全,需注意 ssh-askpass 相关问题,Wayland 环境下需特殊配置。 - 多个 SK 使用:可生成多个密钥对对应不同 SK,ssh-add 时可指定多个,远程连接时只需插入相应 SK 触摸即可。
- 要求密码(PIN):可添加
-O verify-required
要求输入 PIN,可在本地或authorized_keys
中设置,多个不同密钥时会较麻烦,PIN 是 SK 属性。 - resident 和 non-resident 密钥区别:驻留密钥的 SSH 私钥 handle 存于 SK 中,可提取、删除本地文件等,应添加
-O verify-required
,非驻留密钥更安全。 - 其他应用:如远程 sudo、无头服务器、加密签名等,还可用于本地登录、LUKS 等,移动应用在 Android 的 Termius 和 iOS 的 Prompt、Blink 有支持但非自由软件。
重要细节:
- 生成密钥对时若出错可更换算法,使用多个 SK 时若提示签名失败可忽略未插入的 SK。
- 配置 ssh-askpass 可在 Debian 等系统中安装相关包,Wayland 环境需特殊设置
~/.config/plasma-workspace/env/local-ssh-agent.sh
。 - 处理 PIN 问题时若多次输入错误可拔掉再插入 YubiKey 重置,
fido2-token
可用于查询密钥信息,ssh -v
可查看 ssh 操作。 - 若遇到权限问题可添加
/etc/udev/rules.d/90-sec-key.rules
文件设置设备组。 - 关于其他用途如在 PAM 中使用等未详细测试。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。