尝试仅使用当前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库仅使用用户名或主机名和私钥进行身份验证?