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

发布: (2026年3月2日 GMT+8 04:15)
5 分钟阅读
原文: Dev.to

Source: Dev.to

《原生 Windows SSH 代理使用 CNG/KSP,无依赖,支持智能卡,并具备完整 RDP 兼容性》封面图

概述

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-tool
  • ssh -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 证书

  1. 将证书安装到 Windows 证书存储区(不可导出密钥)。

  2. 启动代理。

  3. 导出公钥:

    ssh-agent.exe -exportkey id.pub
  4. id.pub 添加到服务器上的 authorized_keys

  5. 连接:

    ssh user@server

无需私钥文件、令牌,也不需要额外的配置。

此代理最有用的场景

  • RDP / RemoteApp / Citrix 环境
  • Windows 跳板主机
  • PKI / ADCS 管理员
  • 使用 Windows + WSL2 的 DevOps
  • 使用智能卡(PIV/GIDS/YubiKey)的企业
  • 使用 TPM 或 Windows Hello 的企业
  • 加固工作站
  • 基于 Windows 的 CI 流水线

下载

0 浏览
Back to Blog

相关文章

阅读更多 »

当工作成为心理健康风险时

markdown !Ravi Mishrahttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fu...