首页 > 解决方案 > 使用 SSH 公钥/私钥连接到 sFTP 服务器。错误 {Invalid private key file.} 使用 SSH.NET

问题描述

首先,我使用生成的密钥

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。任何帮助将不胜感激,谢谢。

标签: .netasp.net-mvcsftpopensshssh.net

解决方案


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


推荐阅读