Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) SSH Keyboard AuthenticationDemonstrates how to implement keyboard authentication with an SSH server.
IncludeFile "CkSsh.pb" IncludeFile "CkXml.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ssh.i = CkSsh::ckCreate() If ssh.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Set some timeouts, in milliseconds: CkSsh::setCkConnectTimeoutMs(ssh, 5000) CkSsh::setCkIdleTimeoutMs(ssh, 15000) ; Connect to the SSH server. ; The standard SSH port = 22 ; The hostname may be a hostname or IP address. hostname.s = "sftp.example.com" port.i = 22 success.i = CkSsh::ckConnect(ssh,hostname,port) If success <> 1 Debug CkSsh::ckLastErrorText(ssh) CkSsh::ckDispose(ssh) ProcedureReturn EndIf ; Begin keyboard authentication.. xmlResponse.s = CkSsh::ckStartKeyboardAuth(ssh,"myLogin") If CkSsh::ckLastMethodSuccess(ssh) <> 1 Debug CkSsh::ckLastErrorText(ssh) CkSsh::ckDispose(ssh) ProcedureReturn EndIf ; If a user authentication banner was received, then your app ; may display it prior to prompting for the password. Debug "UserAuthBanner: " + CkSsh::ckUserAuthBanner(ssh) xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkXml::ckLoadXml(xml,xmlResponse) ; Assume LoadXml succeeds for the example.. If CkXml::ckHasChildWithTag(xml,"success") = 1 Debug "No password required, already authenticated." CkSsh::ckDispose(ssh) CkXml::ckDispose(xml) ProcedureReturn EndIf If CkXml::ckHasChildWithTag(xml,"error") = 1 Debug "Authentication already failed." CkSsh::ckDispose(ssh) CkXml::ckDispose(xml) ProcedureReturn EndIf ; See the online reference documentation for Chilkat SSH. ; The XML returned by StartKeyboardAuth will contain an infoRequest ; with one or more prompts that your application may choose to display. ; Call ContinueKeyboardAuth, passing in the whatever information is requires (such as the password). ; Typically, keyboard authentication requires one call to ContinueKeyboardAuth ; using the password. Theoretically, the SSH server could prompt for additional pieces ; of information. The authentication is completed when the XML returned contains ; either a "success" or "error" child node. ; This example asumes only one call to ContinueKeyboardAuth is required. xmlResponse = CkSsh::ckContinueKeyboardAuth(ssh,"myPassword") If CkSsh::ckLastMethodSuccess(ssh) <> 1 Debug CkSsh::ckLastErrorText(ssh) CkSsh::ckDispose(ssh) CkXml::ckDispose(xml) ProcedureReturn EndIf success = CkXml::ckLoadXml(xml,xmlResponse) ; Assume LoadXml succeeds for the example.. If CkXml::ckHasChildWithTag(xml,"success") = 1 Debug "SSH Keyboard Authentication Successful!" CkSsh::ckDispose(ssh) CkXml::ckDispose(xml) ProcedureReturn EndIf If CkXml::ckHasChildWithTag(xml,"error") = 1 Debug "Authentication failed." CkSsh::ckDispose(ssh) CkXml::ckDispose(xml) ProcedureReturn EndIf CkSsh::ckDispose(ssh) CkXml::ckDispose(xml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.