小编Kon*_*ram的帖子

使用SSH.NET从配置字符串加载SSH私钥时,出现“ Renci.SshNet.Common.SshException:私钥文件无效”

我正在尝试使用SFTP将文件发送到某些服务器。在此过程中,我遇到了异常

Renci.SshNet.Common.SshException:无效的私钥文件。在Renci.SshNet.PrivateKeyFile.Open(Stream privateKey,String passPhrase)

使用PuTTYgen生成了密钥,如下所示是私钥文件的示例格式。它同时具有公共密钥和私有密钥。

PuTTY-User-Key-File-2: ssh-rsa  
Encryption:none  
comment: rsa-key-20190327  
Public-Lines: 4  
AAAAB.....  
......  
Private-Lines: 8  
AAAAgQ......  
.......  
Private-MAC: 54901783....  
Run Code Online (Sandbox Code Playgroud)

我将上述文件中的私钥部分复制到了配置文件中,并按照SftpKey我的代码进行访问。

得到了上述密钥的OpenSSH格式,看起来像

------BEGIN RSA PRIVATE KEY-----  
MIIE....  
.......  
------END RSA PRIVATE KEY-------  
Run Code Online (Sandbox Code Playgroud)

我只复制了上面文件中的关键部分,然后复制到我的配置文件中,然后运行了我的代码。问题尚未解决。

以下是我用于SFTP上传的代码

var fileLength = data.Length;

var keyStr = ConfigurationManager.ConnectionStrings["SftpKey"].ConnectionString;
using (var keystrm = new MemoryStream(Convert.FromBase64String(keyStr)))
{
    var privateKey = new PrivateKeyFile(keystrm);
    using (var ftp = new SftpClient(_ftpServer, _ftpUser, new[] { privateKey }))
    {
        ftp.ErrorOccurred += ErrorOccurred;
        ftp.Connect();
        ftp.ChangeDirectory(_ftpPath);
        using (var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
        { …
Run Code Online (Sandbox Code Playgroud)

.net c# ssh sftp ssh.net

5
推荐指数
2
解决办法
2280
查看次数

标签 统计

.net ×1

c# ×1

sftp ×1

ssh ×1

ssh.net ×1