我正在使用 Renci.SshNet 库,并让它使用用户名和私钥。当从文件或文件流读取私钥时,我可以很好地打开私钥,但在内存流期间它会失败。
这有效:
var pk = new PrivateKeyFile(@"C:\myfile.ppk");
Run Code Online (Sandbox Code Playgroud)
这有效:
var f = new FileStream(@"C:\myfile.ppk", FileMode.Open, FileAccess.Read);
var pk = new PrivateKeyFile(f);
Run Code Online (Sandbox Code Playgroud)
这些失败并显示“私钥无效”。
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>"));
Run Code Online (Sandbox Code Playgroud)
我什至尝试了在 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;
}
Run Code Online (Sandbox Code Playgroud)
我一开始以为 Renci …