Unable to connect to AIX(Unix) box with SSH.NET Library - Error : Value cannot be null

.net, aix, c#, putty, ssh

Solution

I found the solution after some research. Hope it helps somebody else.

The keyboard interactive authentication should be used and `AuthenticationPrompt` event should be overridden with the following function

void HandleKeyEvent(Object sender, AuthenticationPromptEventArgs e)
{
    foreach (AuthenticationPrompt prompt in e.Prompts)
    {
        if (prompt.Request.IndexOf("Password:", StringComparison.InvariantCultureIgnoreCase) != -1)
        {
            prompt.Response = password;
        }
    }
}

The function call code :

KeyboardInteractiveAuthenticationMethod kauth = new KeyboardInteractiveAuthenticationMethod(username);
PasswordAuthenticationMethod pauth = new PasswordAuthenticationMethod(username, password);

kauth.AuthenticationPrompt += new EventHandler<AuthenticationPromptEventArgs>(HandleKeyEvent);

ConnectionInfo connectionInfo = new ConnectionInfo(serverName, port, username, pauth, kauth);

sshClient = new SshClient(connectionInfo);
sshClient.Connect();

Problem

I am trying to connect to an AIX box and execute some commands using `SSH.NET` library. The following is the code snipplet ``` KeyboardInteractiveAuthenticationMethod kauth = new KeyboardInteractiveAuthenticationMethod(username); PasswordAuthenticationMethod pauth = new PasswordAuthenticationMethod(username, password); ConnectionInfo connectionInfo = new(ConnectionInfo(servername, 22, username, pauth,kauth); SshClient sshClient = new SshClient(connectionInfo); sshClient.Connect(); SshCommand sshCommand = sshClient.RunCommand("mpstat"); Console.WriteLine(sshCommand.Result); Console.ReadKey(); ``` I get the following exception message when I try to connect at the line `sshClient.Connect()` {"Value cannot be null.\r\nParameter name: data"} The stack trace is ``` at Renci.SshNet.KeyboardInteractiveAuthenticationMethod.Authenticate(Session session) at Renci.SshNet.ConnectionInfo.Authenticate(Session session) at Renci.SshNet.Session.Connect() at Renci.SshNet.BaseClient.Connect() ``` I am confident that the credentials I pass are valid since I am able to log-in using the `PuTTY` client with the same credentials. Any ideas?

Original source