Sample code for 30+ languages & platforms
Lua Requires Chilkat v9.5.0.71+

SFTP Authenticate Secure

Demonstrates how to do SFTP password authentication with secure strings.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- 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=="
-- }

local json = chilkat.JsonObject.new()
json:load_file("qa_data/passwords/ssh.json")

local crypt = chilkat.Crypt2.new()

-- These are the encryption settings we previously used to encrypt the credentials within the JSON config file.
crypt.crypt_algorithm = "aes"
crypt.cipher_mode = "cbc"
crypt.key_length = 128
crypt:set_encoded_key("000102030405060708090A0B0C0D0E0F", "hex")
crypt:set_encoded_iv("000102030405060708090A0B0C0D0E0F", "hex")
crypt.encoding_mode = "base64"

local ssLogin = chilkat.SecureString.new()
local ssPassword = chilkat.SecureString.new()

-- Decrypt to the secure string.  (the strings will still held in memory encrypted, but are now encrypted using
-- a randomly generated session key.)
crypt:decrypt_secure_enc(json:string_of("ssh_login"), ssLogin)
crypt:decrypt_secure_enc(json:string_of("ssh_password"), ssPassword)

local sftp = chilkat.SFtp.new()

local success = sftp:connect("MY-SSH-SERVER-DOMAIN-OR-IP", 22)
if not success then
    print(sftp.last_error_text)
    return
end

-- Authenticate using secure strings
success = sftp:authenticate_sec_pw(ssLogin, ssPassword)
if not success then
    print(sftp.last_error_text)
    return
end

print("SFTP Authentication successful.")

sftp:disconnect()