我正在尝试使用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)