Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Get SSH Server Authentication Methods
See more SSH Examples
Demonstrates how to get the authentication methods of an SSH server.This example requires Chilkat v9.5.0.78 or greater.
Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Ssh;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
ssh: TSsh;
authMethods: string;
begin
success := False;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
ssh := TSsh.Create;
// To get the authentication methods offered by an SSH server, we first connect.
success := ssh.Connect('example.com',22);
if (success <> True) then
begin
WriteLn(ssh.LastErrorText);
Exit;
end;
// Next, we call GetAuthMethods to receive a comma separated list of authentication methods
authMethods := ssh.GetAuthMethods();
if (ssh.LastMethodSuccess <> True) then
begin
WriteLn(ssh.LastErrorText);
Exit;
end;
// For example: publickey,password,keyboard-interactive
WriteLn('Authentication methods suported by this serve: ' + authMethods);
// IMPORTANT:
// Getting the authentication methods will intentionally disconnect from the server.
// We'll need to re-connect, etc. to continue..
// For example..
success := ssh.Connect('example.com',22);
if (success <> True) then
begin
WriteLn(ssh.LastErrorText);
Exit;
end;
success := ssh.AuthenticatePw('myLogin','myPassword');
if (success <> True) then
begin
WriteLn(ssh.LastErrorText);
Exit;
end;
WriteLn('SSH Authentication successful.');
// ...
ssh.Disconnect();
ssh.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.