SSH.NET公钥认证

时间:2018-11-16 19:46:34

标签: c# ssh ssh.net

我知道private key authentication可以工作,但是我正在寻找公用密钥身份验证。

我正在尝试使用SSH.NET和公共密钥建立连接。

在Git Bash终端中,我可以使用公共密钥连接并运行命令,但是当我尝试使用SSH.NET连接到同一主机时,会出现异常。

这是我尝试连接的方式:

using (var client = new SshClient("host.name.com", port, "username"))
{
    client.Connect(); // exception thrown here
}

我也尝试过此路线:

var authMethod = new PrivateKeyAuthenticationMethod("username");
var info = new ConnectionInfo("host.name.com", port, "username", authMethod);
using (var client = new SshClient(info))

两者都具有相同的例外:Permission denied (publickey).

似乎我需要指定我的公钥在哪里,或者我需要将我的公钥放在某个位置,但是找不到任何文档可以告诉我将其放在哪里。

1 个答案:

答案 0 :(得分:0)

没有“私钥身份验证” 。它实际上称为“公钥身份验证”

尽管您需要公钥和私钥来使用“公钥身份验证” 进行身份验证。之所以称为“公钥身份验证” ,是因为客户端(在本例中为SSH.NET)仅向服务器发送密钥-因此服务器使用<仅限em>公钥。 私钥仅在本地使用。

尽管通常称为私钥的文件格式(例如PEM或.ppk)(与公钥(.pub)格式相反)实际上包含整个密钥对(公钥和私钥)。

因此,您链接到的问题-SSH.NET Authenticate via private key only (public key authentication)-实际上可以满足您的要求。它显示了如何使用“公钥身份验证” 进行身份验证-使用私钥文件格式(实际上是公钥和私钥)。我已经编辑了该问题的标题,以使其更加清楚。


为了纠正您,“在Git Bash终端中我可以使用我的公钥很好地连接并运行命令”是不正确的。-这是不可能的。您也必须有一个私钥。