PureBasic
PureBasic
SFTP Public-Key Authentication (id_ed25519)
See more SFTP Examples
Demonstrates how to authenticate with an SSH/SFTP server using publickey authentication with an Ed25519 private key (id_ed25519).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.
key.i = CkSshKey::ckCreate()
If key.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; The id_ed25519 file should contain something like this:
; (You can open it in a text editor..)
; -----BEGIN OPENSSH PRIVATE KEY-----
; b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDIeK9+Xw
; 6Do9gnhtrJu5iJAAAAZAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIMh/Ge7fjQCssmVd
; BqjYZbRAI0pY8IrnB6J1yLetq34OAAAAoMVP7cvy4hTiAINA3I4v55OonkpKza8mzfUW18
; RDQeYL3ovCVaAYOGcCpf/SW3QiY6tnXq+5WDEfJ7Z/kQ0nl2+1wSLOytxpyO+IY0rRtLrX
; 6e/agR4nbZpt/MFG6xqcNASbtDgg+9IWGvDrtXOLFofx07/zml+UjFL0tXRpCjOxeqKyXH
; t8SRgdT97d9/bYPwapaXY+b2DVVy5/LVx4Sq8=
; -----END OPENSSH PRIVATE KEY-----
privKeyText.s = CkSshKey::ckLoadText(key,"c:/temp/id_ed25519")
If CkSshKey::ckLastMethodSuccess(key) <> 1
Debug CkSshKey::ckLastErrorText(key)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
; If your private key was saved encrypted, then you'll need the password.
; In this example, the password "blahblah" is valid for the above key -- which is a real Ed25519 key generated/saved from puttygen.
CkSshKey::setCkPassword(key, "blahblah")
success = CkSshKey::ckFromOpenSshPrivateKey(key,privKeyText)
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
; Set some timeouts, in milliseconds:
CkSFtp::setCkConnectTimeoutMs(sftp, 5000)
CkSFtp::setCkIdleTimeoutMs(sftp, 15000)
hostname.s = "sftp.example.com"
port.i = 22
success = CkSFtp::ckConnect(sftp,hostname,port)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSshKey::ckDispose(key)
CkSFtp::ckDispose(sftp)
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)
CkSshKey::ckDispose(key)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
Debug CkSFtp::ckLastErrorText(sftp)
Debug "Public-Key Authentication Successful!"
; Now go do whatever you're app needs to do...
CkSshKey::ckDispose(key)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndProcedure