DataFlex
DataFlex
SSH Keyboard Authentication
See more SSH Examples
Demonstrates how to implement keyboard authentication with an SSH server.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSsh
String sHostname
Integer iPort
String sXmlResponse
Handle hoXml
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatSsh)) To hoSsh
If (Not(IsComObjectCreated(hoSsh))) Begin
Send CreateComObject of hoSsh
End
// Set some timeouts, in milliseconds:
Set ComConnectTimeoutMs Of hoSsh To 5000
Set ComIdleTimeoutMs Of hoSsh To 15000
// Connect to the SSH server.
// The standard SSH port = 22
// The hostname may be a hostname or IP address.
Move "sftp.example.com" To sHostname
Move 22 To iPort
Get ComConnect Of hoSsh sHostname iPort To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoSsh To sTemp1
Showln sTemp1
Procedure_Return
End
// Begin keyboard authentication..
Get ComStartKeyboardAuth Of hoSsh "myLogin" To sXmlResponse
Get ComLastMethodSuccess Of hoSsh To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoSsh To sTemp1
Showln sTemp1
Procedure_Return
End
// If a user authentication banner was received, then your app
// may display it prior to prompting for the password.
Get ComUserAuthBanner Of hoSsh To sTemp1
Showln "UserAuthBanner: " sTemp1
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXml Of hoXml sXmlResponse To iSuccess
// Assume LoadXml succeeds for the example..
Get ComHasChildWithTag Of hoXml "success" To bTemp1
If (bTemp1 = True) Begin
Showln "No password required, already authenticated."
Procedure_Return
End
Get ComHasChildWithTag Of hoXml "error" To bTemp1
If (bTemp1 = True) Begin
Showln "Authentication already failed."
Procedure_Return
End
// See the online reference documentation for Chilkat SSH.
// The XML returned by StartKeyboardAuth will contain an infoRequest
// with one or more prompts that your application may choose to display.
// Call ContinueKeyboardAuth, passing in the whatever information is requires (such as the password).
// Typically, keyboard authentication requires one call to ContinueKeyboardAuth
// using the password. Theoretically, the SSH server could prompt for additional pieces
// of information. The authentication is completed when the XML returned contains
// either a "success" or "error" child node.
// This example asumes only one call to ContinueKeyboardAuth is required.
Get ComContinueKeyboardAuth Of hoSsh "myPassword" To sXmlResponse
Get ComLastMethodSuccess Of hoSsh To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoSsh To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComLoadXml Of hoXml sXmlResponse To iSuccess
// Assume LoadXml succeeds for the example..
Get ComHasChildWithTag Of hoXml "success" To bTemp1
If (bTemp1 = True) Begin
Showln "SSH Keyboard Authentication Successful!"
Procedure_Return
End
Get ComHasChildWithTag Of hoXml "error" To bTemp1
If (bTemp1 = True) Begin
Showln "Authentication failed."
Procedure_Return
End
End_Procedure