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