DataFlex
DataFlex
SSH Authenticate with a Private Key
See more SSH Examples
Demonstrates the Chilkat Ssh.AuthenticatePk method, which authenticates a connected SSH session using public-key authentication. The first argument is the username and the second is an SshKey private key. The matching public key must already be authorized for the account on the server.
Note: The private-key path is relative to the application's current working directory. Supply the path to your own key file.
Background: Public-key authentication is the standard for unattended and automated SSH: the private key stays on the client, the server trusts the corresponding public key, and no reusable password crosses the wire. The
SshKey object imports keys in several formats — this example loads an OpenSSH private key. An empty or public-only key is rejected locally.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSsh
Integer iSshPort
Variant vPrivKey
Handle hoPrivKey
String sKeyStr
String sTemp1
Boolean bTemp1
Move False To iSuccess
// Demonstrates the Ssh.AuthenticatePk method, which authenticates a connected SSH session using
// public-key authentication. The 1st argument is the username and the 2nd is an SshKey private
// key. The matching public key must already be authorized for the account on the server.
Get Create (RefClass(cComChilkatSsh)) To hoSsh
If (Not(IsComObjectCreated(hoSsh))) Begin
Send CreateComObject of hoSsh
End
// Connect to the SSH server. Port 22 is the usual SSH port.
Move 22 To iSshPort
Get ComConnect Of hoSsh "ssh.example.com" iSshPort To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSsh To sTemp1
Showln sTemp1
Procedure_Return
End
// Load the SSH private key. LoadText reads the file's text, which is then imported.
Get Create (RefClass(cComChilkatSshKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
Get ComLoadText Of hoPrivKey "qa_data/id_rsa" To sKeyStr
Get ComLastMethodSuccess Of hoPrivKey To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComFromOpenSshPrivateKey Of hoPrivKey sKeyStr To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get pvComObject of hoPrivKey to vPrivKey
Get ComAuthenticatePk Of hoSsh "mySshLogin" vPrivKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSsh To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Authenticated with private key."
Send ComDisconnect To hoSsh
End_Procedure