我知道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).
似乎我需要指定我的公钥在哪里,或者我需要将我的公钥放在某个位置,但是找不到任何文档可以告诉我将其放在哪里。
答案 0 :(得分:0)
没有“私钥身份验证” 。它实际上称为“公钥身份验证” 。
尽管您需要公钥和私钥来使用“公钥身份验证” 进行身份验证。之所以称为“公钥身份验证” ,是因为客户端(在本例中为SSH.NET)仅向服务器发送公密钥-因此服务器使用<仅限em>公钥。 私钥仅在本地使用。
尽管通常称为私钥的文件格式(例如PEM或.ppk)(与公钥(.pub)格式相反)实际上包含整个密钥对(公钥和私钥)。
因此,您链接到的问题-SSH.NET Authenticate via private key only (public key authentication)-实际上可以满足您的要求。它显示了如何使用“公钥身份验证” 进行身份验证-使用私钥文件格式(实际上是公钥和私钥)。我已经编辑了该问题的标题,以使其更加清楚。
为了纠正您,“在Git Bash终端中我可以使用我的公钥很好地连接并运行命令”是不正确的。-这是不可能的。您也必须有一个私钥。