小编Gra*_*weg的帖子

SSH.NET是否只接受OpenSSH格式的私钥?如果没有,有什么限制?

手册没有说明这一点,但是一些谷歌搜索返回了十年之交的页面(例如这个),这表明至少曾经是这种情况.我们有这样的代码:

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)

.net c# ssh sftp ssh.net

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×1

c# ×1

sftp ×1

ssh ×1

ssh.net ×1