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) SFTP Auth Failure Reason (AuthenticatePwPk)This example demonstrates how to determine the failure reason for the case where both a password and private key are required for authentication. If authentication fails, was it because of an invalid private key, or an invalid password? Note: This example requires a feature introduced in Chilkat v9.5.0.79
IncludeFile "CkSshKey.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkSFtp.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Load a private key to be used for SSH authentication. key.i = CkSshKey::ckCreate() If key.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkSshKey::setCkPassword(key, "key_password") success.i = CkSshKey::ckFromOpenSshPrivateKey(key,CkSshKey::ckLoadText(key,"qa_data/my_private_key_file")) If success <> 1 Debug CkSshKey::ckLastErrorText(key) CkSshKey::ckDispose(key) ProcedureReturn EndIf sftp.i = CkSFtp::ckCreate() If sftp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkSFtp::ckConnect(sftp,"sftp.example.com",22) If success <> 1 Debug CkSFtp::ckLastErrorText(sftp) CkSshKey::ckDispose(key) CkSFtp::ckDispose(sftp) ProcedureReturn EndIf ; Authenticate using both a password and private key. success = CkSFtp::ckAuthenticatePwPk(sftp,"myLogin","myPassword",key) If success = 1 Debug "Authentication is successful!" CkSshKey::ckDispose(key) CkSFtp::ckDispose(sftp) ProcedureReturn EndIf ; If we get here, it means the authentication failed. ; To find out why, get the LastJsonData ; This is a feature added in Chilkat v9.5.0.79 json.i = CkSFtp::ckLastJsonData(sftp) CkJsonObject::setCkEmitCompact(json, 0) ; This is the JSON if the key is correct, but the password is incorrect: ; { ; "public_key_type": "rsa", ; "partialAuthResult": "publickey success. continue to authenticate with password...", ; "authResult": "failed", ; "authFailReason": "Password is incorrect" ; } ; This is the JSON if the key is incorrect. We won't know if the password is also incorrect until ; the key is made correct so that authentication proceeds to check the password. ; { ; "public_key_type": "rsa", ; "authResult": "failed", ; "authFailReason": "Key is incorrect" ; } ; To get the authResult anbd authFailReason: Debug "authResult: " + CkJsonObject::ckStringOf(json,"authResult") Debug "authFailReason: " + CkJsonObject::ckStringOf(json,"authFailReason") CkJsonObject::ckDispose(json) CkSshKey::ckDispose(key) CkSFtp::ckDispose(sftp) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.