Sample code for 30+ languages & platforms
Lianja

SFTP Authenticate Secure

Demonstrates how to do SFTP password authentication with secure strings.

This example requires Chilkat v9.5.0.71 or greater.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

// Imagine we've previously saved our encrypted login and password within a JSON config file
// that contains this:

// {
//   "ssh_login": "2+qylFfC56Ck7OQQt/U2/w==",
//   "ssh_password": "5neIq9Jmn0E3p71N6Yc8TA=="
// }

loJson = createobject("CkJsonObject")
loJson.LoadFile("qa_data/passwords/ssh.json")

loCrypt = createobject("CkCrypt2")

// These are the encryption settings we previously used to encrypt the credentials within the JSON config file.
loCrypt.CryptAlgorithm = "aes"
loCrypt.CipherMode = "cbc"
loCrypt.KeyLength = 128
loCrypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex")
loCrypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
loCrypt.EncodingMode = "base64"

loSsLogin = createobject("CkSecureString")
loSsPassword = createobject("CkSecureString")

// Decrypt to the secure string.  (the strings will still held in memory encrypted, but are now encrypted using
// a randomly generated session key.)
loCrypt.DecryptSecureENC(loJson.StringOf("ssh_login"),loSsLogin)
loCrypt.DecryptSecureENC(loJson.StringOf("ssh_password"),loSsPassword)

loSftp = createobject("CkSFtp")

llSuccess = loSftp.Connect("MY-SSH-SERVER-DOMAIN-OR-IP",22)
if (llSuccess <> .T.) then
    ? loSftp.LastErrorText
    release loJson
    release loCrypt
    release loSsLogin
    release loSsPassword
    release loSftp
    return
endif

// Authenticate using secure strings
llSuccess = loSftp.AuthenticateSecPw(loSsLogin,loSsPassword)
if (llSuccess <> .T.) then
    ? loSftp.LastErrorText
    release loJson
    release loCrypt
    release loSsLogin
    release loSsPassword
    release loSftp
    return
endif

? "SFTP Authentication successful."

loSftp.Disconnect()


release loJson
release loCrypt
release loSsLogin
release loSsPassword
release loSftp