Lua Requires Chilkat v11.0.0+
Lua
SFTP Auth Failure Reason (AuthenticatePwPk)
See more SFTP Examples
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?Chilkat Lua Downloads
local chilkat = require("chilkat")
-- 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.
local key = chilkat.SshKey.new()
key.password = "key_password"
local success = key:from_open_ssh_private_key(key:load_text("qa_data/my_private_key_file"))
if not success then
print(key.last_error_text)
return
end
local sftp = chilkat.SFtp.new()
success = sftp:connect("sftp.example.com", 22)
if not success then
print(sftp.last_error_text)
return
end
-- Authenticate using both a password and private key.
success = sftp:authenticate_pw_pk("myLogin", "myPassword", key)
if success then
print("Authentication is successful!")
return
end
-- If we get here, it means the authentication failed.
-- Examine the last JSON data..
local json = chilkat.JsonObject.new()
sftp:get_last_json_data(json)
json.emit_compact = false
-- 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:
print("authResult: " .. json:string_of("authResult"))
print("authFailReason: " .. json:string_of("authFailReason"))