SSH.NET Autenticar apenas por chave privada (autenticação de chave pública)
Tentativa de autenticar via nome de usuário e chave privada apenas usando a biblioteca SSH.NET atual. Não consigo obter a senha do usuário, portanto isso está fora de questão.
Aqui está o que estou fazendo agora.
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();
}
Agora, se eu remover oPasswordAuthenticationMethod
deAuthenticationMethod[]
array Recebo uma exceção, pois nenhum método de autenticação adequado foi encontrado. Se eu tentar passar o (hostname, porta, nome de usuário, keyfile2) como tal
var keyFile = new PrivateKeyFile(privateKeyLocation);
var keyFile2 = new[] {keyFile};
novamente, nenhum método adequado encontrado.
Parece que tenho que usar oConnectionInfo
como descrevi acima, mas parece que ele avalia oPasswordAuthenticationMethod
e não consigo fazer login (já que não forneço uma senha) e nunca avalia oPrivateKeyAuthMethod
... é esse o caso? Existe alguma outra maneira de autenticar apenas com um nome de usuário ou nome de host e chave privada usando o SSH.NET lib?