原生 Windows SSH 代理,使用 CNG/KSP,无依赖,支持 smartcard,具备完整 RDP 兼容性
Source: Dev.to

概述
SRO PKCS11 – SSH Agent CNG 是一个单一的 Windows 可执行文件,统一了:
- 完整的 PKCS#11 模块(兼容 Firefox、OpenSC、
ssh -I) - 兼容 OpenSSH 的 SSH 代理
- 兼容 Pageant 的服务器,用于 PuTTY
- 用于智能卡、TPM、Windows Hello 和企业证书的 CNG/KSP 后端
- WSL2 TCP 监听器
它没有外部依赖,没有 CRT,没有 DLL,也没有中间件。它可在 RDP、RemoteApp、Citrix、多会话和强化环境中运行。
Repository: (link not provided in the original text)
问题:Windows 无法在 SSH 中使用企业身份
企业证书无法用于 SSH
OpenSSH for Windows cannot use:
- non‑exportable keys
- ADCS‑issued certificates
- TPM‑backed keys
- Windows Hello keys
- Smartcards using CNG/KSP
这迫使管理员在磁盘上生成私钥,与企业身份标准相比是一种倒退。
Pageant is not SSH‑native
- Requires a hidden window to function
- Limited to PuTTY solutions
gpg‑agent is not Windows‑native
It does not support:
- CNG/KSP
- Windows smartcard minidrivers
- Enterprise certificates
- Non‑exportable keys
- Multi‑session environments
PKCS#11 modules do not integrate with the Windows Certificate Store
OpenSC cannot access:
- TPM‑backed keys
- Windows Hello keys
- ADCS certificates
- Virtual smartcards
因此,现有工具无法使用 Windows 已安全管理的身份。
解决方案:统一的、本地的、无依赖的代理
该项目提供一个单一可执行文件,提供以下功能:
- 完整的 PKCS#11 模块
- SSH 代理
- Pageant 服务器
- WSL2 TCP 桥接
- CNG/KSP 加密后端
所有加密操作均委托给 Windows。私钥永不离开 KSP,PIN 输入由本地 Windows UI 处理。
关键特性
- 原生 CNG/KSP 集成
- 在 RDP 和多会话环境中工作
- 无依赖,无 CRT,无外部 DLL
- 支持智能卡、TPM、Windows Hello、ADCS 证书
- 支持 RSA、ECDSA、Ed25519、Ed448、Brainpool
- 支持具有 14 种机制的 PKCS#11
- 与 OpenSSH、Git for Windows、Visual Studio、PuTTY、WSL、WSL2 兼容
- 为强化环境提供可选的 Windows 服务模式
为什么这是目前 Windows 上的最佳选择
- 使用
NCryptSignHash和 Windows 证书存储的完整 CNG/KSP 支持 - 私钥永不导出或通过代理传输;始终保留在 KSP 内部
- PIN 处理完全由 Windows 完成
- 支持 RDP 与多会话:在 RDP、RemoteApp、Citrix、多会话以及非交互式会话中均可工作
- 单一二进制文件:无 DLL、无运行时、无外部库、无注册表污染
完整的 PKCS#11 实现
兼容:
- Firefox
pkcs11-toolssh -I- 任意支持 PKCS#11 的产品
支持 RSA、ECDSA、EdDSA、Brainpool 和 PSS。
完整的 SSH 代理
兼容:
- OpenSSH
- Git for Windows
- Visual Studio / VSCode Remote
- WSL / WSL2(通过 TCP
127.0.0.1:10022)
Pageant 兼容性
PuTTY、plink、pscp 和 psftp 都可以工作。
可选的 Windows 服务模式
针对加固或多用户环境:
- 服务在 session 0 中运行
- 辅助程序在用户会话中运行
- PIN UI 在正确的会话中显示
- 服务与加密操作之间实现严格隔离
示例:在 SSH 中使用 ADCS 证书
-
将证书安装到 Windows 证书存储区(不可导出密钥)。
-
启动代理。
-
导出公钥:
ssh-agent.exe -exportkey id.pub -
将
id.pub添加到服务器上的authorized_keys。 -
连接:
ssh user@server
无需私钥文件、令牌,也不需要额外的配置。
此代理最有用的场景
- RDP / RemoteApp / Citrix 环境
- Windows 跳板主机
- PKI / ADCS 管理员
- 使用 Windows + WSL2 的 DevOps
- 使用智能卡(PIV/GIDS/YubiKey)的企业
- 使用 TPM 或 Windows Hello 的企业
- 加固工作站
- 基于 Windows 的 CI 流水线