You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8下生成PuTTY兼容带密码私钥的方案咨询

生成PuTTY兼容的加密RSA私钥(.NET 8)

你之前用ExportEncryptedPkcs8PrivateKeyPem生成的加密PKCS#8 PEM无法被PuTTYgen识别,是因为PuTTYgen对PKCS#8的加密参数兼容性有限。下面提供两种适配.NET 8的解决方案:

方案1:原生.NET生成加密OpenSSH格式私钥(可导入PuTTYgen转换)

.NET 8原生支持导出加密的OpenSSH格式私钥,这种格式可以直接被PuTTYgen导入并转换为PPK。代码如下:

string passphrase = "foo";
using (RSA rsa = RSA.Create(4096))
{
    return rsa.ExportEncryptedOpenSshPrivateKey(
        passphrase,
        new PbeParameters(PbeEncryptionAlgorithm.Aes256Cbc, HashAlgorithmName.SHA256, 100000));
}

使用方式:

  • 将生成的内容保存为后缀为.pem或.txt的文件
  • 打开PuTTYgen,点击「Load」,文件类型选择「All Files」,选中该文件
  • 输入密码后即可导入,随后可点击「Save private key」保存为PPK格式

方案2:使用Renci.SshNet直接生成PPK格式

如果需要直接生成PuTTY专属的PPK格式,推荐使用Renci.SshNet库,它可以直接输出标准PPK内容,无需转换。

步骤:

  1. 安装NuGet包:
Install-Package Renci.SshNet
  1. 编写代码:
using Renci.SshNet;
using Renci.SshNet.Security;

string passphrase = "foo";
using (RSA rsa = RSA.Create(4096))
{
    // 将.NET RSA参数转换为Renci的RsaKey对象
    var rsaKey = new RsaKey(rsa.ExportParameters(true));
    // 生成带密码加密的PPK内容
    var ppkContent = rsaKey.ToPrivateKey(passphrase);
    return ppkContent;
}

说明:生成的内容直接保存为.ppk文件,即可被PuTTY或PuTTYgen直接使用,加密方式与PuTTYgen原生生成的PPK一致。

内容的提问来源于stack exchange,提问作者maxmoore14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:22:14