Sample code for 30+ languages & platforms
C#

Get SSH Server Authentication Methods

See more SSH Examples

Demonstrates getting the authentication methods advertised by an SSH server. Connect first but do not authenticate, then call GetAuthMethods, which returns a lowercase, comma-separated list such as publickey,password,keyboard-interactive.

Important: Querying the authentication methods intentionally disconnects from the server, so reconnect before authenticating.

Background: Knowing what a server accepts lets a client choose the right authentication path rather than guessing — for example, falling back to keyboard-interactive when password authentication is not offered, or failing fast with a clear message when only public-key is allowed. It is also useful diagnostically when authentication fails for reasons that are not obvious from the error text.

Chilkat C# Downloads

C#
bool success = false;

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

//  Demonstrates getting the authentication methods advertised by an SSH server.

Chilkat.Ssh ssh = new Chilkat.Ssh();

int port = 22;

//  The server must be connected, but not yet authenticated.
success = ssh.Connect("ssh.example.com",port);
if (success == false) {
    Debug.WriteLine(ssh.LastErrorText);
    return;
}

//  Returns a lowercase, comma-separated list, such as:
//      publickey,password,keyboard-interactive
string authMethods = ssh.GetAuthMethods();
if (ssh.LastMethodSuccess == false) {
    Debug.WriteLine(ssh.LastErrorText);
    return;
}

Debug.WriteLine("Authentication methods supported by this server: " + authMethods);

//  IMPORTANT: Querying the authentication methods intentionally disconnects from the server.
//  Reconnect before authenticating.
success = ssh.Connect("ssh.example.com",port);
if (success == false) {
    Debug.WriteLine(ssh.LastErrorText);
    return;
}

//  Normally you would not hard-code the password in source.  You should instead obtain it
//  from an interactive prompt, environment variable, or a secrets vault.
string password = "mySshPassword";

success = ssh.AuthenticatePw("mySshLogin",password);
if (success == false) {
    Debug.WriteLine(ssh.LastErrorText);
    return;
}

Debug.WriteLine("SSH authentication successful.");

ssh.Disconnect();