【发布时间】:2021-10-18 04:49:56
【问题描述】:
首先我使用生成的密钥
var keygen = new SshKeyGenerator.SshKeyGenerator(2048);
var privateKey = keygen.ToPrivateKey();
var publicSshKey = keygen.ToRfcPublicKey();
私钥生成以下字符串:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBA... etc.
-----END RSA PRIVATE KEY-----
我现在正在尝试创建一个新的 Renci.SshNet.PrivateKeyFile 对象以用于创建 SftpClient 对象。我尝试以多种方式加载 RSA 私钥字符串:
using (var keyStream = new MemoryStream(Encoding.ASCII.GetBytes(ReturnKey())))
{
var privateKy = new PrivateKeyFile(keyStream);
}
ReturnKey() 方法只返回一个私钥字符串 -----BEGIN RSA PRIVATE KEY----- 等。我尝试过使用和不使用“-----BEGIN RSA 和 - ----End RSA" 我得到了同样的结果:
错误{无效的私钥文件。}
我拥有连接到 sFTP 服务器的所有详细信息,即用户、DNS、端口、路径。生成了公钥,我只是无法加载私钥作为开始。
这是我第一次不得不使用 SSH 连接到 sFTP。任何帮助将不胜感激,谢谢。
【问题讨论】:
-
请edit您的问题显示您程序中的所有相关代码,特别是产生错误的代码。理想情况下,您应该发布一个完整、简单的程序来演示问题。
-
new PrivateKeyFile(new MemoryStream(Encoding.ASCII.GetBytes(new SshKeyGenerator.SshKeyGenerator(2048).ToPrivateKey())))不会对我抛出任何异常(我使用了 NuGet 包 SshKeyGenerator 1.1.40 和 SSH.NET 2020.0.1)。 -
@MartinPrikryl 这也对我有用,所以它一定是我存储私钥并重新使用它的方式,我会先尝试一些事情。
-
@Kenster 公平点,我将添加所有相关代码。
标签: .net asp.net-mvc sftp openssh ssh.net