Windows 下启用 OpenSSH 对 FIDO/U2F 支持的方法
随着 GitHub SSH 对 FIDO/U2F 安全密钥的支持,使用 FIDO/U2F 进一步保护 SSH 私钥的技术又一次走入人们的视线中, Yubikey 官方和 FeiTian 官方均发布了相关技术支持,相较于过去用 gpg-connect-agent 替代 Putty 中的 Pageant 这种使用智能卡进行 SSH 验证的方法, OpenSSH 对安全密钥的支持不再需要 gpg-agent 等第三方 PAM 程序,更易于使用,同时私钥由私钥文件、私钥文件口令、安全密钥、安全密钥PIN共同保护
然而在 Windows 下,由于 OpenSSH 并没有官方移植,导致 Git、SourceTree 等软件使用 OpenSSH 连接时缺少 FIDO/U2F 支持,为顺利使用安全密钥,以下两点需特别注意
- 在 Windows 平台,支持 FIDO/U2F 的 Win32-OpenSSH 最低版本为 V8.9.0.0p1-Bate ,而不是 Yubikey 官方表述:
-
-
Local and Remote systems must be running OpenSSH 8.2p1 or higher for non-resident keys对于非常驻密钥,本地和远程系统必须运行 OpenSSH 8.2p1 或更高版本Local and Remote systems must be running OpenSSH 8.3 or higher for resident keys对于常驻密钥(可发现凭据),本地和远程系统必须运行 OpenSSH 8.3 或更高版本
-
必要时前往微软官方 Win32-OpenSSH 仓库获取更新,加入环境变量后,使用命令 ssh -V 确认 OpenSSH 版本。
-
- 当使用 Windows 平台的 Git 等工具时,需要注意是否内置了其他来源的 OpenSSH ,如 Git 当前版本 2.35.1 内置了 OpenSSH 8.8p1,实测对于 Windows 并不支持 FIDO/U2F,需要让 Git 安装目录下的 OpenSSH 组件失效,进而使 Git 调用上一步安装的 Win32-OpenSSH,一种投机取巧的方法是将 Git 安装目录下的 usr/bin/ssh.exe 文件重命名。
下篇文章将简述当前几种使用 Yubikey 保护 SSH 的方法