尝试仅使用当前的 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();
}
现在,如果我PasswordAuthenticationMethod
从AuthenticationMethod[]
数组中删除 ,我会得到一个异常,因为找不到合适的身份验证方法。如果我尝试这样传递(主机名、端口、用户名、密钥文件 2)
var keyFile = new PrivateKeyFile(privateKeyLocation);
var keyFile2 = new[] {keyFile};
再次,没有找到合适的方法。
似乎我必须使用ConnectionInfo
上面概述的对象,但似乎它评估PasswordAuthenticationMethod
并且无法登录(因为我没有提供密码)并且从不评估PrivateKeyAuthMethod
......是这样吗?是否有其他方法可以使用 SSH.NET lib 仅使用用户名或主机名和私钥进行身份验证?