手册没有说明这一点,但是一些谷歌搜索返回了十年之交的页面(例如这个),这表明至少曾经是这种情况.我们有这样的代码:
var privateKeyAuthenticationMethod =
new PrivateKeyAuthenticationMethod(userName, new PrivateKeyFile(privateKeyLocation));
var connInfo =
new ConnectionInfo(
ftpSettings.HostAddress, ftpSettings.UserName, privateKeyAuthenticationMethod);
using (var client = new SftpClient(connInfo))
{
client.Connect();
client.UploadFile(memStreamData, destination);
}
Run Code Online (Sandbox Code Playgroud)
这挂钩到我们通过SCP2成功使用的私钥(此处详述的安全复制2 ) - 它是2048 DSA,在SSH.NET文档中列为有效.密钥使用ssh.com格式,如:
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Subject: <FID name>
Comment: "2048-bit dsa, <FID name>@<Server name>, Mon Apr 24 201\
7 15:49:36 +0100"
<ENCRYPTED KEY>
---- END SSH2 ENCRYPTED PRIVATE KEY ----
Run Code Online (Sandbox Code Playgroud)
但是,RegexSSH.NET的私钥处理部分内部无法匹配我们的私钥,因此抛出异常:
ERROR 2017-05-10 15:31:43 UTC [T: 474] – …Run Code Online (Sandbox Code Playgroud)