SFTP Object
 
 
Syntax
 
SFTP.AuthenticatePk(username As String, privateKey As ChilkatSshKey) As Long
 
Description
Authenticates with the SSH server using public-key authentication. The corresponding public key must have been installed on the SSH server for the username. Authentication will succeed if the matching privateKey is provided.
 
Important: When reporting problems, please send the full contents of the LastErrorText property to support@tradium.nl.
 
Returns 1 for success, 0 for failure.
 
See Also

Example:
Use PuTTY Key for SFTP Authentication
Sub Main
 
' Load a .ppk PuTTY private key.
Dim puttyKey As New ChilkatSshKey
Dim ppkText As String
ppkText = puttyKey.LoadText("qa_data/ppk/putty_private_secret.ppk")
 
' The ppkText contains this content:
 
' PuTTY-User-Key-File-2: ssh-rsa
' Encryption: aes256-cbc
' Comment: rsa-key-20170126
' Public-Lines: 6
' AAAAB3NzaC1yc2EAAAABJQAAAQEAx+52s7vvaZ8rT2UdFZWlSUVDHDQ+5ZRFvgRW
' 6nm2sO1c9WqNg7u2PQL4jeKSDX2XWcMnpleALz2x8Rr4rMy5E1iZzvWov8VtFd8l
' fa9HOkgEeJB3VFuYR3NlnD3eyCoYJYPVpHJHrIeui2WZs5vQ76HDe+th8+z5Ald4
' zPw3p2c6ZJpBrkSBM67hWokoBDi23c7NhszDHhJBrv+B98cQxnagI1PUKqN7E8Vg
' bNtBI8beIMHyI69up9G1AXSEi0cGIjYNx9RNUPau1mRk/SvfqxgWkAjM005lj7hc
' bOsjbdKK3T2NtrKTaYjEiXlEXcj1iGuApsD/m73pYaEJB3Nd7w==
' Private-Lines: 14
' MoaDbq0owouN/7Z9Pga0favDhM2bSEgMErJBxdDmNUXIVVcUoLiD/Ps1RA+BeBBX
' wxqKUt9PqLy/pnafPR/i2xjJiQtQ0CWkPxND16Gi1dqLzmbQYYl1ev4+LzuG0zNX
' HDGMvRiwagY7mY+F1tUjBYfOL6z8XHw4m40YcY1QorOO+0MMzAVT5Hkg8YyXW209
' B/V/LRADFMVA2BlL39y11cb5ZpFStPH/waYUMY+2w1ZmJZ7dcRoMjuKmY+YE/tUx
' n9X3P0qTNSbw6e6sMG3Dhr1vfoJUQWApUliD6GpUiCeIvXBcVqG8Vsfq9XADsPl0
' +nFAwjSZflywcB7/FwhGb7q5UmcJK06SzoMl7Og5e3g7NCs3yNNQIv+qCpDjhxrA
' hpT03mbipu7OXCZDeUwUhMGJAmYHE5iqm1rPCsSVbaMgpxhCWf01Cx4gLx3aMvn4
' MdylA31GuL3wSxcWTslrOI8+449lZN/qZEnGEZkYTrnlu123jTqsAWMMtuHSz2Ig
' 6GA89oTdlppkNflhNH3OJ85kMUrc3p/ZBMdndz8jTDTljmJjHR5oNMoShFof115A
' nWjUHqBwCgcubLYyH3afDvBTOhtl0tJ9Oby0wJlOAGnCXiPSDbF/y7J7xml/PS9t
' XlSVNxtAY15NDO6Fp96sBVfKuJsfJ90PzdBom4ikIuf7sMwtElrHHLuYfcXJQYLp
' G5jBmqDgnirosVPEBIxlxFzz/HCRmdU+tsYg46gqI4R5UpKUe8WSaJoZkDGsrqhm
' e+1SJaBuafR4v2bx/bV414Hg7LGQosK2S3crxH4UgZl+g02vWznZfBH+9CmHvKDR
' AxfcKOTzsaILKJtQPV81lmJ45sARYMcB5jMiE4kBg56hiXouChsvKkm55WVcW1E+
' Private-MAC: 17512c9f7582c1d9c3ae2b01b4d67a6b1dbd1d0e
 
' "secret" is the actual password for the above PPK.
puttyKey.Password = "secret"
Dim success As Long
success = puttyKey.FromPuttyPrivateKey(ppkText)
If (success <> 1) Then
    Debug.Print puttyKey.LastErrorText
    Exit Sub
End If
 
Dim sshHostname As String
sshHostname = "sftp.example.com"
Dim sshPort As Long
sshPort = 22
 
' Connect to an SSH/SFTP server
success = sftp.Connect(sshHostname,sshPort)
If (success <> 1) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' Authenticate with the SSH server using a username + private key.
' (The private key serves as the password.  The username identifies
' the SSH user account on the server.)
success = sftp.AuthenticatePk("mySshLogin",puttyKey)
If (success <> 1) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
Debug.Print "OK, the connection and authentication with the SSH server is completed."
 
' This example is only to show the connection + authentication using a PuTTY private key...
 
End Sub
 

Example:
AWS Transfer for SFTP (Amazon S3)
Sub Main
 
' Connect to the AWS SFTP server.
' Change the domain to your value.
Dim domain As String
domain = "s-123456df999999fab.server.transfer.eu-west-2.amazonaws.com"
Dim port As Long
port = 22
Dim success As Long
success = sftp.Connect(domain,port)
If (success = 0) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' Load your AWS SFTP private key PEM file..
Dim sshKey As New ChilkatSshKey
Dim keyText As String
keyText = sshKey.LoadText("qa_data/pem/s3_sftp_privateKey.pem")
If (sshKey.LastMethodSuccess <> 1) Then
    Debug.Print sshKey.LastErrorText
    Exit Sub
End If
 
success = sshKey.FromOpenSshPrivateKey(keyText)
If (success = 0) Then
    Debug.Print sshKey.LastErrorText
    Exit Sub
End If
 
' Authenticate with the SSH server using the private key.
success = sftp.AuthenticatePk("myUsername",sshKey)
If (success = 0) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' After authenticating, the SFTP subsystem must be initialized:
success = sftp.InitializeSftp()
If (success = 0) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' Upload from the local file to the SSH server.
' Important -- the remote filepath is the 1st argument,
' the local filepath is the 2nd argument;
Dim remoteFilePath As String
remoteFilePath = "hamlet.xml"
Dim localFilePath As String
localFilePath = "c:/temp/hamlet.xml"
 
success = sftp.UploadFileByName(remoteFilePath,localFilePath)
If (success = 0) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
Debug.Print "Success."
 
End Sub
 
 
Example:
Generate RSA Key for SFTP
Sub Main
 
Dim key As New ChilkatSshKey
 
Dim numBits As Long
numBits = 2048
Dim exponent As Long
exponent = 65537
Dim success As Long
success = key.GenerateRsaKey(numBits,exponent)
If (success <> 1) Then
    Debug.Print "Bad params passed to RSA key generation method."
    Exit Sub
End If
 
' Note: Generating a public/private key pair is CPU intensive
' and may take a short amount of time (more than few seconds,
' but less than a minute).
 
Dim exportedKey As String
Dim exportEncrypted As Long
 
' Export the RSA private key to encrypted PuTTY format:
key.Password = "secret"
exportEncrypted = 1
exportedKey = key.ToPuttyPrivateKey(exportEncrypted)
success = key.SaveText(exportedKey,"qa_output/rsa_privkey_putty_encrypted.ppk")
 
' Export the public key to openSSH format..
exportedKey = key.ToOpenSshPublicKey()
success = key.SaveText(exportedKey,"qa_output/id_rsa.pub")
 
' Sample id_rsa.pub:
' ssh-rsa
' AAAAB3NzaC1yc2EAAAADAQABAAA.....6tK3+vjwX/YC9dIXUz2Z
 
Debug.Print "Finished.  Upload the id_rsa.pub to your .ssh directory located on the SSH/SFTP server under your user account's HOME directory"
Debug.Print "(Your HOME directory is the default directory you are in when you login via an SSH terminal.)"
 
' After the id_rsa.pub is uploaded to your user account on the SSH/SFTP server, you can authenticate using the private key.
' Your application will load the private key (.ppk) as shown here: Load SSH/SFTP Private Key .ppk
' and then authenticate by calling AuthenticatePk (or AuthenticatePwPk).
 
End Sub