首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSH.NET公钥认证

SSH.NET公钥认证
EN

Stack Overflow用户
提问于 2018-11-16 19:46:34
回答 1查看 8.6K关注 0票数 0

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

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

在Git终端中,我可以使用我的公钥连接和运行命令,但是当我尝试使用SSH.NET连接到同一台主机时,我会得到一个异常。

以下是我试图连接的方式:

代码语言:javascript
复制
using (var client = new SshClient("host.name.com", port, "username"))
{
    client.Connect(); // exception thrown here
}

我也尝试过这条路线:

代码语言:javascript
复制
var authMethod = new PrivateKeyAuthenticationMethod("username");
var info = new ConnectionInfo("host.name.com", port, "username", authMethod);
using (var client = new SshClient(info))

两者都给出了相同的例外:Permission denied (publickey).

似乎我需要指定我的公钥在哪里,或者我需要将我的公钥放在一个特定的位置,但是我找不到任何文档来告诉我把它放在哪里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-21 07:08:13

没有“私钥认证”。它实际上被称为“公钥认证”。

尽管您需要(私钥和公钥)来使用“公钥身份验证”进行身份验证。它被称为“公钥身份验证”,因为客户机(在本例中为SSH.NET)只向服务器发送公钥,因此服务器只使用公钥对您进行身份验证。私钥仅在本地使用。

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

所以你链接到的问题-- SSH.NET Authenticate via private key only (public key authentication) --实际上可以做你想做的事情。它展示了如何使用“公钥身份验证”进行身份验证--使用私钥文件格式(实际上包括公钥和私钥)。我编辑了那个问题的标题,以使这一点更加清楚。

为了纠正您的错误,“在Git Bash终端中,我可以使用我的公钥连接和运行命令”--这是不可能的。你一定也有私钥。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53344409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档