在 Windows 系统中使用硬件安全密钥的 OpenPGP 功能登录 SSH

698 字
3 分钟
在 Windows 系统中使用硬件安全密钥的 OpenPGP 功能登录 SSH
关于硬件安全密钥:本文所指之硬件安全密钥,包括Yubikey和兼容Yubikey的各种硬件安全密钥实现(比如RS-Key、Pico Keys等)。只要能使用对应的应用的,理论上就可以适用本文,下文简称安全密钥。

使用安全密钥登录 SSH 的几种方式#

我们都知道安全密钥一般支持以下 Applet:

  • OATH:生成基于时间的一次性密码 (TOTP) 和基于计数器的一次性密码 (HOTP)

  • FIDO2 / WebAuthn:用于实现无密码或免密登录。

  • PIV:个人身份验证 (Personal Identity Verification)

  • OpenPGP:实现 OpenPGP 智能卡标准,可以用于代码签名和邮件加密。

其中,FIDO2、PIV、OpenPGP 均可以用于登录SSH,本文只介绍 OpenPGP 这种方式,因为它的配置还算简单,也没有太多奇怪的问题。

使用 OpenPGP 登录 SSH#

首先,需要安装 Gpg4win,点击链接,到官网下载安装即可。

这里比较坑,因为文字编码问题,如果你的Windows用户文件夹的名称带有中文,可能会导致安装后无法使用,因此一定要在安装前确保Windows用户文件夹是纯英文的!至于修改的方法,请自行bing。

安装后,在 cmd 中执行gpg --version,应该能够看到版本信息。

如果你的安全密钥还没有初始化,可以使用 Kleopatra 在管理智能卡中进行初始化(卡片操作->生成新密钥)。

初始化过后,运行gpg --list-key,在杂乱的数据中,你应该能找到包含[A]标记的密钥,就像这样。

list-key的数据
list-key的数据

复制图中画横线的部分(也就是密钥指纹),执行以下命令

Terminal window
gpg --export-ssh-key <密钥指纹>

如图:

export-ssh-key的执行结果
export-ssh-key的执行结果

复制输出的部分,插入到你想使用这个安全密钥登录的服务器的~/.ssh/authorized_keys中。

然后打开路径: %APPDATA%\gnupg,创建gpg-agent.conf,写入以下配置并保存

enable-ssh-support
enable-win32-openssh-support
enable-putty-support
default-cache-ttl 600
max-cache-ttl 7200

然后需要设置 gpg-agent 的自启动,这里请看这篇文章

Windows 下更好的 GPG 自启动设置方法
2026-08-29开发#计算机技术#OpenPGP#密码学

下面需要选择一个好用的 SSH GUI 客户端~~(当然你直接用OpenSSH也不是不行)~~,我这里推荐MobaXterm,因为它配置 gpg-agent 很简单,只需要勾选Use PuTTY agent即可。

配置教程
配置教程

之后正常创建 SSH session 即可。连接时,MobaXterm 会自动调用 gpg-agent,询问你安全密钥的 PIN,输入后即可正常登录。

输入PIN
输入PIN

TIPS:

  1. Tabby 终端很难配置,我经过各种尝试都没有让他成功用上 gpg-agent。
  2. 输入一次 PIN 后,可能在拔下来之前重新验证就不需要再次输入 PIN,具体看卡的实现。
  3. 我还想写使用FIDO的,有点麻烦,暂时鸽了。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
在 Windows 系统中使用硬件安全密钥的 OpenPGP 功能登录 SSH
https://blog.00910721.xyz/posts/yubikey-use-opengpg-login-ssh-on-windows/
作者
透明质酸钠
发布于
2026-08-08
许可协议
CC BY-NC 4.0

评论区

Profile Image of the Author
透明质酸钠
宁宁就要0721!
关于网站主题
网站近期修改了主题配置,如果界面还是粉色,请您清空本网站的本地存储~~
分类
标签
最新动态
站点统计
文章
11
分类
7
标签
21
总字数
15,929
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.5
文章许可
CC BY-NC 4.0