我知道private key authentication可以工作,但是我正在寻找公钥身份验证。
我正在尝试使用SSH.NET和公钥建立一个连接。
在Git终端中,我可以使用我的公钥连接和运行命令,但是当我尝试使用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).
似乎我需要指定我的公钥在哪里,或者我需要将我的公钥放在一个特定的位置,但是我找不到任何文档来告诉我把它放在哪里。
发布于 2018-11-21 07:08:13
没有“私钥认证”。它实际上被称为“公钥认证”。
尽管您需要(私钥和公钥)来使用“公钥身份验证”进行身份验证。它被称为“公钥身份验证”,因为客户机(在本例中为SSH.NET)只向服务器发送公钥,因此服务器只使用公钥对您进行身份验证。私钥仅在本地使用。
尽管通常被称为私钥(如PEM或.ppk)的文件格式--与公钥(.pub)格式相反--实际上包含整个密钥对(包括公钥和私钥)。
所以你链接到的问题-- SSH.NET Authenticate via private key only (public key authentication) --实际上可以做你想做的事情。它展示了如何使用“公钥身份验证”进行身份验证--使用私钥文件格式(实际上包括公钥和私钥)。我编辑了那个问题的标题,以使这一点更加清楚。
为了纠正您的错误,“在Git Bash终端中,我可以使用我的公钥连接和运行命令”--这是不可能的。你一定也有私钥。
https://stackoverflow.com/questions/53344409
复制相似问题