轻松使用带有 FIDO2/U2F 硬件安全密钥的 SSH

主要观点:新的硬件安全密钥(如 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-skssh-keygen -t ecdsa-sk
  • 与 ssh-agent 配合:可ssh-addSK 密钥,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 中使用等未详细测试。
阅读 44
0 条评论