我正在使用Renci.SshNet庫,並使用用戶名和私鑰工作。當從文件或文件流中讀取私鑰時,我可以將私鑰打開,但在內存流中失敗。SshNet問題與流私鑰
這工作:
`var pk = new PrivateKeyFile(@"C:\myfile.ppk");`
這工作:
var f = new FileStream(@"C:\myfile.ppk", FileMode.Open, FileAccess.Read);
var pk = new PrivateKeyFile(f);
這些失敗,出現 「無效的密碼」。
var s = new MemoryStream(Encoding.UTF8.GetBytes(variablename));
//No carriage returns
var s = new MemoryStream(Encoding.UTF8.GetBytes(@"-----BEGIN RSA PRIVATE KEY----- <snip>"));
//Include carriage returns
var s = new MemoryStream(Encoding.UTF8.GetBytes(@"-----BEGIN RSA PRIVATE KEY----- <snip>"));
我甚至試過流位置上,從而發現:
`private Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
`
我起初想的Renci文庫與流中的錯誤,但很明顯,文件流作品。我計劃在一個天藍色的存儲表格中以字符串格式存儲密鑰,但我願意接受其他想法。
我覺得我對此很盲目,你的初級調試幫助 - 我的腦袋深陷在問題中,我忘記了基本的調試細節。出於某種原因,從Notepad ++複製/粘貼到Azure表中會插入一些錯誤的字符 - 不知道。在「/」字符周圍放置空格,可能是某種類型的天藍色逃逸。我將字符串從azure複製到Visual Studio和bam! 但是,我認爲你是對的,我更喜歡你的解決方案,將整個文件存儲在一個BLOB中,並從那裏進行流式傳輸,而不用擔心格式化。感謝這個想法,我正在爲此而努力。 – scimino