【发布时间】:2017-05-22 22:57:47
【问题描述】:
我正在使用 Renci.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>"));
我什至尝试了在 SO 上找到的流位置:
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 库在 Stream 上有一个错误,但显然文件流有效。我计划将字符串格式的密钥托管在一个 azure 存储表中,但我对其他想法持开放态度。
【问题讨论】: