簡體   English   中英

使用字符串中的密鑰通過 SSH.NET 對 SFTP 進行身份驗證時出現“無效的私鑰文件”

[英]"Invalid private key file" when authenticating to SFTP with SSH.NET using a key in a string

我有一個程序,我想連接到 SFTP 主機並推/拉文件。 主機需要私鑰才能連接。 使用這些帖子作為指導:

我做了以下事情:

  • 使用 given.ppk 文件,我使用 PuTTYgen 將其轉換為 OpenSSH 格式
  • 從生成的私鑰中,我將其復制到我的代碼中並嘗試使用它創建一個SftpClient

以下是我的代碼:

SftpClient sftp = null;

if (bHost.Equals("sftp.sftpHost.com"))
{
    var keyStr = @"-----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: DES-EDE3-CBC,15BEAB6C0B73F39A

    ***private key***
    -----END RSA PRIVATE KEY-----";

    using (var keystrm = new MemoryStream(Encoding.UTF8.GetBytes(keyStr)))
    {
        var privateKey = new PrivateKeyFile(keystrm, "passPhrase");
        sftp = new SftpClient(bHost, bUser, new[] { privateKey });
    }
} else
{
    sftp = new SftpClient(bHost, bPort, bUser, bPw);
}

return sftp;
                   

我的代碼是否有問題,或者我生成 OpenSSH 格式密鑰的方式可能不正確?

我注意到在其他示例鍵字符串中,它們不包括以下內容:

Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,15BEAB6C0B73F39A

它可能是多行字符串中的前導空格。 他們不能在那里。

刪除它們。

    var keyStr = @"-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,15BEAB6C0B73F39A

***private key***
-----END RSA PRIVATE KEY-----";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM