PureBasic
PureBasic
SFTP Public-Key Authentication
See more SFTP Examples
Demonstrates how to authenticate with an SSH/SFTP server using publickey authentication.Chilkat PureBasic Downloads
IncludeFile "CkSshKey.pb"
IncludeFile "CkSFtp.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
sftp.i = CkSFtp::ckCreate()
If sftp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Set some timeouts, in milliseconds:
CkSFtp::setCkConnectTimeoutMs(sftp, 5000)
CkSFtp::setCkIdleTimeoutMs(sftp, 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 = CkSFtp::ckConnect(sftp,hostname,port)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
key.i = CkSshKey::ckCreate()
If key.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Load a PEM file into a string variable:
; (This does not load the PEM file into the key. The LoadText
; method is a convenience method for loading the full contents of ANY text
; file into a string variable.)
privKey.s = CkSshKey::ckLoadText(key,"myPrivateKey.pem")
If CkSshKey::ckLastMethodSuccess(key) <> 1
Debug CkSshKey::ckLastErrorText(key)
CkSFtp::ckDispose(sftp)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
; Load a private key from a PEM string:
; (Private keys may be loaded from OpenSSH and Putty formats.
; Both encrypted and unencrypted private key file formats
; are supported. This example loads an unencrypted private
; key in OpenSSH format.
success = CkSshKey::ckFromOpenSshPrivateKey(key,privKey)
If success <> 1
Debug CkSshKey::ckLastErrorText(key)
CkSFtp::ckDispose(sftp)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
; Authenticate with the SSH server. Chilkat SFTP supports
; both password-based authenication as well as public-key
; authentication.
success = CkSFtp::ckAuthenticatePk(sftp,"myLogin",key)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
Debug CkSFtp::ckLastErrorText(sftp)
Debug "Public-Key Authentication Successful!"
CkSFtp::ckDispose(sftp)
CkSshKey::ckDispose(key)
ProcedureReturn
EndProcedure