gpt4 book ai didi

c# - SSH.NET Authenticate via private key only (公钥认证)

转载 作者:太空狗 更新时间:2023-10-29 21:38:55 24 4
gpt4 key购买 nike

尝试仅使用当前的 SSH.NET 库通过用户名和私钥进行身份验证。我无法从用户那里得到密码,所以这是不可能的。

这是我现在正在做的。

Renci.SshNet.ConnectionInfo conn = 
new ConnectionInfo(hostName, port, username, new AuthenticationMethod[]
{
new PasswordAuthenticationMethod(username, ""),
new PrivateKeyAuthenticationMethod(username, new PrivateKeyFile[]
{ new PrivateKeyFile(privateKeyLocation, "") }),
});

using (var sshClient = new SshClient(conn))
{
sshClient.Connect();
}

现在,如果我从 AuthenticationMethod[] 数组中删除 PasswordAuthenticationMethod,我会得到一个异常,因为找不到合适的身份验证方法。如果我尝试这样传递(主机名、端口、用户名、keyfile2)

var keyFile = new PrivateKeyFile(privateKeyLocation);
var keyFile2 = new[] {keyFile};

同样,没有找到合适的方法。

我似乎必须使用上面概述的 ConnectionInfo 对象,但它似乎评估了 PasswordAuthenticationMethod 并且无法登录(因为我没有提供密码)并且从不评估 PrivateKeyAuthMethod...是这种情况吗?有没有其他方法可以使用 SSH.NET 库仅使用用户名或主机名和私钥进行身份验证?

最佳答案

这里的问题是您仍在使用密码,即使它是空白的。删除这一行:

new PasswordAuthenticationMethod(username, ""), 

这非常适合我:

var pk = new PrivateKeyFile(yourkey);
var keyFiles = new[] { pk };

var methods = new List<AuthenticationMethod>();
methods.Add(new PrivateKeyAuthenticationMethod(UserName, keyFiles));

var con = new ConnectionInfo(HostName, Port, UserName, methods.ToArray());

关于c# - SSH.NET Authenticate via private key only (公钥认证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com