【问题标题】:Connectig to sFTP Server using SSH public/private key. Error {Invalid private key file.} Using SSH.NET使用 SSH 公钥/私钥连接到 sFTP 服务器。错误 {Invalid private key file.} 使用 SSH.NET
【发布时间】: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


【解决方案1】:

看起来这是我添加私钥文本的方式;相反,我将密钥保存到 txt 文件并直接加载。我认为 ReturnKey() 函数的字符串中可能还有其他字符、制表符/回车符,所以如果我添加完整代码会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 2011-05-21
    • 2023-03-16
    • 2011-06-17
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多