Ssh Delphi DLL Reference Documentation

Ssh

Current Version: 10.1.0

A client-side SSH2 implementation for executing commands and shell sessions on Unix/Windows SSH servers.

Create/Dispose

var
myObject: HCkSsh;

begin
myObject := CkSsh_Create();

// ...

CkSsh_Dispose(myObject);
end;
function CkSsh_Create: HCkSsh; stdcall;

Creates an instance of the HCkSsh object and returns a handle (i.e. a Pointer). The handle is passed in the 1st argument for the functions listed on this page.

procedure CkSsh_Dispose(handle: HCkSsh); stdcall;

Objects created by calling CkSsh_Create must be freed by calling this method. A memory leak occurs if a handle is not disposed by calling this function.

Properties

AbortCurrent
function CkSsh_getAbortCurrent(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putAbortCurrent(objHandle: HCkSsh; newPropVal: wordbool); stdcall;
Introduced in version 9.5.0.58

When set to True, causes the currently running method to abort. Methods that always finish quickly (i.e.have no length file operations or network communications) are not affected. If no method is running, then this property is automatically reset to False when the next method is called. When the abort occurs, this property is reset to False. Both synchronous and asynchronous method calls can be aborted. (A synchronous method call could be aborted by setting this property from a separate thread.)

top
AuthFailReason
function CkSsh_getAuthFailReason(objHandle: HCkSsh): Integer; stdcall;
Introduced in version 9.5.0.52

Set to one of the following values if a call to AuthenticatePw, AuthenticatePk, or AuthenticatePwPk returns a failed status.

  • 1: Transport failure. This is a failure to communicate with the server (i.e. the connection was lost, or a read or write failed or timed out).
  • 2: Invalid key for public key authentication. The key was not a valid format, not a valid key, not a private key, or not the right type of key.
  • 3: No matching authentication methods were available.
  • 4: SSH authentication protocol error - an unexpected or invalid message was received.
  • 5: The incorrect password or private key was provided.
  • 6: Already authenticated. The SSH session is already authenticated.
  • 7: Password change request: The server requires the password to be changed.

top
CaretControl
function CkSsh_getCaretControl(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putCaretControl(objHandle: HCkSsh; newPropVal: wordbool); stdcall;
Introduced in version 9.5.0.49

Controls whether the caret character '^' is interpreted as indicating a control character. The default value of this property is False. If set to True, then the following sequences are interpreted as control characters in any string passed to SendReqExec or ChannelSendString.

^@ 	00 	00 	NUL  	Null
^A 	01 	01 	SOH  	Start of Heading
^B 	02 	02 	STX  	Start of Text
^C 	03 	03 	ETX  	End of Text
^D 	04 	04 	EOT  	End of Transmission
^E 	05 	05 	ENQ  	Enquiry
^F 	06 	06 	ACK  	Acknowledge
^G 	07 	07 	BEL  	Bell
^H 	08 	08 	BS  	Backspace
^I 	09 	09 	HT  	Character Tabulation, Horizontal Tabulation
^J 	10 	0A 	LF  	Line Feed
^K 	11 	0B 	VT  	Line Tabulation, Vertical Tabulation
^L 	12 	0C 	FF  	Form Feed
^M 	13 	0D 	CR  	Carriage Return
^N 	14 	0E 	SO  	Shift Out
^O 	15 	0F 	SI  	Shift In
^P 	16 	10 	DLE  	Data Link Escape
^Q 	17 	11 	DC1  	Device Control One (XON)
^R 	18 	12 	DC2  	Device Control Two
^S 	19 	13 	DC3  	Device Control Three (XOFF)
^T 	20 	14 	DC4  	Device Control Four
^U 	21 	15 	NAK  	Negative Acknowledge
^V 	22 	16 	SYN  	Synchronous Idle
^W 	23 	17 	ETB  	End of Transmission Block
^X 	24 	18 	CAN  	Cancel
^Y 	25 	19 	EM  	End of medium
^Z 	26 	1A 	SUB  	Substitute
^[ 	27 	1B 	ESC  	Escape
^\ 	28 	1C 	FS  	File Separator
^] 	29 	1D 	GS  	Group Separator
^^ 	30 	1E 	RS  	Record Separator
^_ 	31 	1F 	US  	Unit Separator
^? 	127 	7F 	DEL  	Delete

top
ChannelOpenFailCode
function CkSsh_getChannelOpenFailCode(objHandle: HCkSsh): Integer; stdcall;

If a request to open a channel fails, this property contains a code that identifies the reason for failure. The reason codes are defined in RFC 4254 and are reproduced here:

             Symbolic name                           reason code
             -------------                           -----------
            SSH_OPEN_ADMINISTRATIVELY_PROHIBITED          1
            SSH_OPEN_CONNECT_FAILED                       2
            SSH_OPEN_UNKNOWN_CHANNEL_TYPE                 3
            SSH_OPEN_RESOURCE_SHORTAGE                    4

top
ChannelOpenFailReason
procedure CkSsh_getChannelOpenFailReason(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__channelOpenFailReason(objHandle: HCkSsh): PWideChar; stdcall;

The descriptive text corresponding to the ChannelOpenFailCode property.

See the notes about PWideChar memory ownership and validity.

top
ClientIdentifier
procedure CkSsh_getClientIdentifier(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putClientIdentifier(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__clientIdentifier(objHandle: HCkSsh): PWideChar; stdcall;

The client-identifier string to be used when connecting to an SSH/SFTP server. Starting in Chilkat v9.5.0.99, the default is "SSH-2.0-Chilkat_" + the Chilkat version number, such as "SSH-2.0-Chilkat_9.5.0.99".

Note: The client identifier should always begin with "SSH-2.0-". SSH servers may disconnect if it does not.

See the notes about PWideChar memory ownership and validity.

top
ClientIpAddress
procedure CkSsh_getClientIpAddress(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putClientIpAddress(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__clientIpAddress(objHandle: HCkSsh): PWideChar; stdcall;

The IP address to use for computers with multiple network interfaces or IP addresses. For computers with a single network interface (i.e. most computers), this property should not be set. For multihoming computers, the default IP address is automatically used if this property is not set.

The IP address is a string such as in dotted notation using numbers, not domain names, such as "165.164.55.124".

See the notes about PWideChar memory ownership and validity.

top
ClientPort
function CkSsh_getClientPort(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putClientPort(objHandle: HCkSsh; newPropVal: Integer); stdcall;
Introduced in version 9.5.0.75

Normally left at the default value of 0, in which case a unique port is assigned with a value between 1024 and 5000. This property would only be changed if it is specifically required. For example, one customer's requirements are as follows:

"I have to connect to a Siemens PLC IP server on a technical network. This machine expects that I connect to its server from a specific IP address using a specific port otherwise the build in security disconnect the IP connection."

top
ConnectTimeoutMs
function CkSsh_getConnectTimeoutMs(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putConnectTimeoutMs(objHandle: HCkSsh; newPropVal: Integer); stdcall;

Maximum number of milliseconds to wait when connecting to an SSH server.

top
DebugLogFilePath
procedure CkSsh_getDebugLogFilePath(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putDebugLogFilePath(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__debugLogFilePath(objHandle: HCkSsh): PWideChar; stdcall;

If set to a file path, causes each Chilkat method or property call to automatically append it's LastErrorText to the specified log file. The information is appended such that if a hang or crash occurs, it is possible to see the context in which the problem occurred, as well as a history of all Chilkat calls up to the point of the problem. The VerboseLogging property can be set to provide more detailed information.

This property is typically used for debugging the rare cases where a Chilkat method call hangs or generates an exception that halts program execution (i.e. crashes). A hang or crash should generally never happen. The typical causes of a hang are:

  1. a timeout related property was set to 0 to explicitly indicate that an infinite timeout is desired,
  2. the hang is actually a hang within an event callback (i.e. it is a hang within the application code), or
  3. there is an internal problem (bug) in the Chilkat code that causes the hang.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
DisconnectCode
function CkSsh_getDisconnectCode(objHandle: HCkSsh): Integer; stdcall;

If the SSH server sent a DISCONNECT message when closing the connection, this property contains the "reason code" as specified in RFC 4253:

           Symbolic name                                reason code
           -------------                                -----------
      SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT             1
      SSH_DISCONNECT_PROTOCOL_ERROR                          2
      SSH_DISCONNECT_KEY_EXCHANGE_FAILED                     3
      SSH_DISCONNECT_RESERVED                                4
      SSH_DISCONNECT_MAC_ERROR                               5
      SSH_DISCONNECT_COMPRESSION_ERROR                       6
      SSH_DISCONNECT_SERVICE_NOT_AVAILABLE                   7
      SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED          8
      SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE                 9
      SSH_DISCONNECT_CONNECTION_LOST                        10
      SSH_DISCONNECT_BY_APPLICATION                         11
      SSH_DISCONNECT_TOO_MANY_CONNECTIONS                   12
      SSH_DISCONNECT_AUTH_CANCELLED_BY_USER                 13
      SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE         14
      SSH_DISCONNECT_ILLEGAL_USER_NAME                      15

top
DisconnectReason
procedure CkSsh_getDisconnectReason(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__disconnectReason(objHandle: HCkSsh): PWideChar; stdcall;

If the SSH/ server sent a DISCONNECT message when closing the connection, this property contains a descriptive string for the "reason code" as specified in RFC 4253.

See the notes about PWideChar memory ownership and validity.

top
EnableCompression
function CkSsh_getEnableCompression(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putEnableCompression(objHandle: HCkSsh; newPropVal: wordbool); stdcall;
Introduced in version 9.5.0.56

Enables or disables the use of compression w/ the SSH connection. The default value is True, meaning that compression is used if the server supports it.

Some older SSH servers have been found that claim to support compression, but actually fail when compression is used. PuTTY does not enable compression by default. If trouble is encountered where the SSH server disconnects immediately after the connection is seemingly established (i.e. during authentication), then check to see if disabling compression resolves the problem.

top
ForceCipher
procedure CkSsh_getForceCipher(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putForceCipher(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__forceCipher(objHandle: HCkSsh): PWideChar; stdcall;

Allows for the application to specify an encryption algorithm (cipher) or a comma-separated list of algorithms that are acceptable. If this property is set, then the SSH connection will use one of the specified ciphers.

Possible algorithms are:

  • chacha20-poly1305@openssh.com
  • aes128-ctr
  • aes256-ctr
  • aes192-ctr
  • aes128-cbc
  • aes256-cbc
  • aes192-cbc
  • aes128-gcm@openssh.com
  • aes256-gcm@openssh.com
  • twofish256-cbc
  • twofish128-cbc
  • blowfish-cbc
  • 3des-cbc
  • arcfour128
  • arcfour256

This property is empty by default, which means the encryption chosen will be the 1st on the above list (in the order listed above) that is also implemented by the server.

Note: The cipher(s) must be specified using the exact spelling in lowercase as shown above.

Important: If this is property is set and the server does NOT support then encryption algorithm, then the Connect will fail.

See the notes about PWideChar memory ownership and validity.

top
HeartbeatMs
function CkSsh_getHeartbeatMs(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putHeartbeatMs(objHandle: HCkSsh; newPropVal: Integer); stdcall;

This is the number of milliseconds between each AbortCheck event callback. The AbortCheck callback allows an application to abort any SSH operation prior to completion. If HeartbeatMs is 0 (the default), no AbortCheck event callbacks will fire.

top
HostKeyAlg
procedure CkSsh_getHostKeyAlg(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putHostKeyAlg(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__hostKeyAlg(objHandle: HCkSsh): PWideChar; stdcall;

Indicates the preferred host key algorithm to be used in establishing the SSH secure connection. The default is "DSS". It may be changed to "RSA" if needed. Chilkat recommends not changing this unless a problem warrants the change.

See the notes about PWideChar memory ownership and validity.

top
HostKeyFingerprint
procedure CkSsh_getHostKeyFingerprint(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__hostKeyFingerprint(objHandle: HCkSsh): PWideChar; stdcall;

Set after connecting to an SSH server. The format of the fingerprint looks like this: "ssh-rsa 1024 68:ff:d1:4e:6c:ff:d7:b0:d6:58:73:85:07:bc:2e:d5"

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
HttpProxyAuthMethod
procedure CkSsh_getHttpProxyAuthMethod(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putHttpProxyAuthMethod(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__httpProxyAuthMethod(objHandle: HCkSsh): PWideChar; stdcall;

If an HTTP proxy requiring authentication is to be used, set this property to the HTTP proxy authentication method name. Valid choices are "Basic" or "NTLM".

See the notes about PWideChar memory ownership and validity.

top
HttpProxyDomain
procedure CkSsh_getHttpProxyDomain(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putHttpProxyDomain(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__httpProxyDomain(objHandle: HCkSsh): PWideChar; stdcall;

The NTLM authentication domain (optional) if NTLM authentication is used w/ the HTTP proxy.

See the notes about PWideChar memory ownership and validity.

top
HttpProxyHostname
procedure CkSsh_getHttpProxyHostname(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putHttpProxyHostname(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__httpProxyHostname(objHandle: HCkSsh): PWideChar; stdcall;

If an HTTP proxy is to be used, set this property to the HTTP proxy hostname or IPv4 address (in dotted decimal notation).

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
HttpProxyPassword
procedure CkSsh_getHttpProxyPassword(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putHttpProxyPassword(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__httpProxyPassword(objHandle: HCkSsh): PWideChar; stdcall;

If an HTTP proxy requiring authentication is to be used, set this property to the HTTP proxy password.

See the notes about PWideChar memory ownership and validity.

top
HttpProxyPort
function CkSsh_getHttpProxyPort(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putHttpProxyPort(objHandle: HCkSsh; newPropVal: Integer); stdcall;

If an HTTP proxy is to be used, set this property to the HTTP proxy port number. (Two commonly used HTTP proxy ports are 8080 and 3128.)

top
HttpProxyUsername
procedure CkSsh_getHttpProxyUsername(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putHttpProxyUsername(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__httpProxyUsername(objHandle: HCkSsh): PWideChar; stdcall;

If an HTTP proxy requiring authentication is to be used, set this property to the HTTP proxy login name.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
IdleTimeoutMs
function CkSsh_getIdleTimeoutMs(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putIdleTimeoutMs(objHandle: HCkSsh; newPropVal: Integer); stdcall;

Causes SSH operations to fail when progress for sending or receiving data halts for more than this number of milliseconds. Setting IdleTimeoutMs = 0 (the default) allows the application to wait indefinitely.

top
IsConnected
function CkSsh_getIsConnected(objHandle: HCkSsh): wordbool; stdcall;

Returns True if the last known state of the connection with the SSH server is "connected".

Note: The IsConnected property is set to True after successfully completing the Connect method call. The IsConnected property will only be set to False by calling Disconnect, or by the failure of another method call such that the disconnection is detected.

If the last communications with the SSH server was successful and then a long time passes with no communications, and the server disconnects because of inactivity, then IsConnected will still indicate True. A better way of testing the connection is to call SendIgnore after checking to see if IsConnected is True. (If IsConnected is False, then there is surely no connection.)

More Information and Examples
top
KeepSessionLog
function CkSsh_getKeepSessionLog(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putKeepSessionLog(objHandle: HCkSsh; newPropVal: wordbool); stdcall;

Controls whether communications to/from the SSH server are saved to the SessionLog property. The default value is False. If this property is set to True, the contents of the SessionLog property will continuously grow as SSH activity transpires. The purpose of the KeepSessionLog / SessionLog properties is to help in debugging any future problems that may arise.

top
LastErrorHtml
procedure CkSsh_getLastErrorHtml(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__lastErrorHtml(objHandle: HCkSsh): PWideChar; stdcall;

Provides information in HTML format about the last method/property called. If a method call returns a value indicating failure, or behaves unexpectedly, examine this property to get more information.

See the notes about PWideChar memory ownership and validity.

top
LastErrorText
procedure CkSsh_getLastErrorText(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__lastErrorText(objHandle: HCkSsh): PWideChar; stdcall;

Provides information in plain-text format about the last method/property called. If a method call returns a value indicating failure, or behaves unexpectedly, examine this property to get more information.

See the notes about PWideChar memory ownership and validity.

top
LastErrorXml
procedure CkSsh_getLastErrorXml(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__lastErrorXml(objHandle: HCkSsh): PWideChar; stdcall;

Provides information in XML format about the last method/property called. If a method call returns a value indicating failure, or behaves unexpectedly, examine this property to get more information.

See the notes about PWideChar memory ownership and validity.

top
LastMethodSuccess
function CkSsh_getLastMethodSuccess(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putLastMethodSuccess(objHandle: HCkSsh; newPropVal: wordbool); stdcall;

Indicate whether the last method call succeeded or failed. A value of True indicates success, a value of False indicates failure. This property is automatically set for method calls. It is not modified by property accesses. The property is automatically set to indicate success for the following types of method calls:

  • Any method that returns a string.
  • Any method returning a Chilkat object, binary bytes, or a date/time.
  • Any method returning a standard boolean status value where success = True and failure = False.
  • Any method returning an integer where failure is defined by a return value less than zero.

Note: Methods that do not fit the above requirements will always set this property equal to True. For example, a method that returns no value (such as a "void" in C++) will technically always succeed.

top
MaxPacketSize
function CkSsh_getMaxPacketSize(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putMaxPacketSize(objHandle: HCkSsh; newPropVal: Integer); stdcall;

The maximum packet length to be used in the SSH transport protocol. The default value is 8192.

Note: If a large amount of data is to be flowing to/from the SSH server, then setting the MaxPacketSize equal to 32768 may improve performance. For those familiar with the inner workings of the SSH protocol, this is the "maximum packet size" value that is sent in the SSH_MSG_CHANNEL_OPEN message as defined in RFC 4254.

top
NumOpenChannels
function CkSsh_getNumOpenChannels(objHandle: HCkSsh): Integer; stdcall;

The number of currently open channels.

top
PasswordChangeRequested
function CkSsh_getPasswordChangeRequested(objHandle: HCkSsh): wordbool; stdcall;

Set by the AuthenticatePw and AuthenticatePwPk methods. If the authenticate method returns a failed status, and this property is set to True, then it indicates the server requested a password change. In this case, re-call the authenticate method, but provide both the old and new passwords in the following format, where vertical bar characters encapsulate the old and new passwords:

|oldPassword|newPassword|

top
PreferIpv6
function CkSsh_getPreferIpv6(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putPreferIpv6(objHandle: HCkSsh; newPropVal: wordbool); stdcall;

If True, then use IPv6 over IPv4 when both are supported for a particular domain. The default value of this property is False, which will choose IPv4 over IPv6.

top
ReadTimeoutMs
function CkSsh_getReadTimeoutMs(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putReadTimeoutMs(objHandle: HCkSsh; newPropVal: Integer); stdcall;

The maximum amount of time to allow for reading messages/data from the SSH server. This is different from the IdleTimeoutMs property. The IdleTimeoutMs is the maximum amount of time to wait while no incoming data is arriving. The ReadTimeoutMs is the maximum amount of time to allow for reading data even if data is continuing to arrive. The default value of 0 indicates an infinite timeout value.

top
ReqExecCharset
procedure CkSsh_getReqExecCharset(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putReqExecCharset(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__reqExecCharset(objHandle: HCkSsh): PWideChar; stdcall;
Introduced in version 9.5.0.47

Indicates the charset to be used for the command sent via the SendReqExec method. The default is "ANSI". A likely alternate value would be "utf-8".

See the notes about PWideChar memory ownership and validity.

top
ServerIdentifier
procedure CkSsh_getServerIdentifier(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__serverIdentifier(objHandle: HCkSsh): PWideChar; stdcall;
Introduced in version 9.5.0.71

The server-identifier string received from the server during connection establishment. For example, a typical value would be similar to "SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2".

See the notes about PWideChar memory ownership and validity.

top
SessionLog
procedure CkSsh_getSessionLog(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__sessionLog(objHandle: HCkSsh): PWideChar; stdcall;

Contains a log of the messages sent to/from the SSH server. To enable session logging, set the KeepSessionLog property = True. Note: This property is not a filename -- it is a string property that contains the session log data.

See the notes about PWideChar memory ownership and validity.

top
SocksHostname
procedure CkSsh_getSocksHostname(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putSocksHostname(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__socksHostname(objHandle: HCkSsh): PWideChar; stdcall;

The SOCKS4/SOCKS5 hostname or IPv4 address (in dotted decimal notation). This property is only used if the SocksVersion property is set to 4 or 5).

See the notes about PWideChar memory ownership and validity.

top
SocksPassword
procedure CkSsh_getSocksPassword(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putSocksPassword(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__socksPassword(objHandle: HCkSsh): PWideChar; stdcall;

The SOCKS5 password (if required). The SOCKS4 protocol does not include the use of a password, so this does not apply to SOCKS4.

See the notes about PWideChar memory ownership and validity.

top
SocksPort
function CkSsh_getSocksPort(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putSocksPort(objHandle: HCkSsh; newPropVal: Integer); stdcall;

The SOCKS4/SOCKS5 proxy port. The default value is 1080. This property only applies if a SOCKS proxy is used (if the SocksVersion property is set to 4 or 5).

top
SocksUsername
procedure CkSsh_getSocksUsername(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putSocksUsername(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__socksUsername(objHandle: HCkSsh): PWideChar; stdcall;

The SOCKS4/SOCKS5 proxy username. This property is only used if the SocksVersion property is set to 4 or 5).

See the notes about PWideChar memory ownership and validity.

top
SocksVersion
function CkSsh_getSocksVersion(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putSocksVersion(objHandle: HCkSsh; newPropVal: Integer); stdcall;

SocksVersion May be set to one of the following integer values:

0 - No SOCKS proxy is used. This is the default.
4 - Connect via a SOCKS4 proxy.
5 - Connect via a SOCKS5 proxy.

top
SoRcvBuf
function CkSsh_getSoRcvBuf(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putSoRcvBuf(objHandle: HCkSsh; newPropVal: Integer); stdcall;

Sets the receive buffer size socket option. Normally, this property should be left unchanged. The default value is 4194304.

This property can be increased if download performance seems slow. It is recommended to be a multiple of 4096.

top
SoSndBuf
function CkSsh_getSoSndBuf(objHandle: HCkSsh): Integer; stdcall;
procedure CkSsh_putSoSndBuf(objHandle: HCkSsh; newPropVal: Integer); stdcall;

Sets the send buffer size socket option. Normally, this property should be left unchanged. The default value is 262144.

This property can be increased if upload performance seems slow. It is recommended to be a multiple of 4096. Testing with sizes such as 512K and 1MB is reasonable.

top
StderrToStdout
function CkSsh_getStderrToStdout(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putStderrToStdout(objHandle: HCkSsh; newPropVal: wordbool); stdcall;

If True, then stderr is redirected to stdout. In this case, channel output for both stdout and stderr is combined and retrievable via the following methods: GetReceivedData, GetReceivedDataN, GetReceivedText, GetReceivedTextS. If this property is False, then stderr is available separately via the GetReceivedStderr method.

The default value of this property is True.

Note: Most SSH servers do not send stderr output as "extended data" packets as specified in RFC 4254. The SessionLog may be examined to see if any CHANNEL_EXTENDED_DATA messages exist. If not, then all of the output (stdout + stderr) was sent via CHANNEL_DATA messages, and therefore it is not possible to differentiate stderr output from stdout. In summary: This feature will not work for most SSH servers.

top
StripColorCodes
function CkSsh_getStripColorCodes(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putStripColorCodes(objHandle: HCkSsh; newPropVal: wordbool); stdcall;
Introduced in version 9.5.0.67

If True, then terminal color codes are stripped from the received text. The default value of this property is True. (Color codes are non-printable escape sequences that provide information about color for text in a terminal.)

top
TcpNoDelay
function CkSsh_getTcpNoDelay(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putTcpNoDelay(objHandle: HCkSsh; newPropVal: wordbool); stdcall;

Controls whether the TCP_NODELAY socket option is used for the underlying TCP/IP socket. The default value is True. This disables the Nagle algorithm and allows for better performance when small amounts of data are sent to/from the SSH server.

top
UncommonOptions
procedure CkSsh_getUncommonOptions(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putUncommonOptions(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__uncommonOptions(objHandle: HCkSsh): PWideChar; stdcall;
Introduced in version 9.5.0.73

This is a catch-all property to be used for uncommon needs. This property defaults to the empty string, and should typically remain empty.

Can be set to a list of the following comma separated keywords:

  • ForceUserAuthRsaSha1 - Introduced in v9.5.0.98. When doing public-key authentication, forces rsa-sha1 to be used for the userauth algorithm even if the server supports rsa-sha2-256, rsa-sha2-512, but still requires SHA1 for the userauth algorithm. Make sure to set this option before connecting to the server.
  • no-weak-mac-algs - Introduced in v9.5.0.98. Removes all weaker MAC algorithms from the list offered to the SSH server when negotiating the connection parameters during a Connect. Specifically, removes hmac-sha1-96, hmac-sha1, hmac-md5, and hmac-ripemd160. Note: Stronger algorithms such as hmac-sha2-256, hmac-sha2-512, etc., will already be automatically chosen because they are given higher preference. The only way a weaker algorithm is chosen is if the SSH server ONLY supports weaker algorithms. This option would only be set if you explicitly want to avoid connecting to older SSH servers, or servers configured in some unusual way where only weaker algorithms are supported on the server (which is rare).
  • ProtectFromVpn - Introduced in v9.5.0.80. On Android systems, will bypass any VPN that may be installed or active.
  • +ssh-hmac-etm - Introduced in v9.5.0.97. Version 9.5.0.97 disabled the *-etm MAC algorithms to mitigate the Terrapin attack. Use this keyword to include the etm MAC algorithms.
  • +chacha20-poly1305@openssh.com - Introduced in v9.5.0.97. To mitigate the Terrapin attack, chacha20-poly1305@openssh.com is no longer included by default. It can be re-added by adding this keyword.

See the notes about PWideChar memory ownership and validity.

top
UserAuthBanner
procedure CkSsh_getUserAuthBanner(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
procedure CkSsh_putUserAuthBanner(objHandle: HCkSsh; newPropVal: PWideChar); stdcall;
function CkSsh__userAuthBanner(objHandle: HCkSsh): PWideChar; stdcall;
Introduced in version 9.5.0.46

If a user authentication banner message is received during authentication, it will be made available here. An application can check to see if this property contains a banner string after calling StartKeyboardAuth. It is only possible for an application to display this message if it is doing keyboard-interactive authentication via the StartKeyboardAuth and ContinueKeyboardAuth methods.

See the notes about PWideChar memory ownership and validity.

top
VerboseLogging
function CkSsh_getVerboseLogging(objHandle: HCkSsh): wordbool; stdcall;
procedure CkSsh_putVerboseLogging(objHandle: HCkSsh; newPropVal: wordbool); stdcall;

If set to True, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. The default value is False. Verbose logging should only be used for debugging. The potentially large quantity of logged information may adversely affect peformance.

top
Version
procedure CkSsh_getVersion(objHandle: HCkSsh; outPropVal: HCkString); stdcall;
function CkSsh__version(objHandle: HCkSsh): PWideChar; stdcall;

Version of the component/library, such as "9.5.0.94"

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top

Methods

AuthenticatePk
function CkSsh_AuthenticatePk(objHandle: HCkSsh;
    username: PWideChar;
    privateKey: HCkSshKey): wordbool; stdcall;

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@chilkatsoft.com.

Returns True for success, False for failure.

top
AuthenticatePkAsync (1)
function CkSsh_AuthenticatePkAsync(objHandle: HCkSsh;
    username: PWideChar;
    privateKey: HCkSshKey): HCkTask; stdcall;

Creates an asynchronous task to call the AuthenticatePk method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
AuthenticatePw
function CkSsh_AuthenticatePw(objHandle: HCkSsh;
    login: PWideChar;
    password: PWideChar): wordbool; stdcall;

Authenticates with the SSH server using a login and password.

An SSH session always begins by first calling Connect to connect to the SSH server, and then calling either AuthenticatePw or AuthenticatePk to login.

Important: When reporting problems, please send the full contents of the LastErrorText property to support@chilkatsoft.com.
Note: To learn about how to handle password change requests, see the PasswordChangeRequested property (above).

Returns True for success, False for failure.

top
AuthenticatePwAsync (1)
function CkSsh_AuthenticatePwAsync(objHandle: HCkSsh;
    login: PWideChar;
    password: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the AuthenticatePw method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
AuthenticatePwPk
function CkSsh_AuthenticatePwPk(objHandle: HCkSsh;
    username: PWideChar;
    password: PWideChar;
    privateKey: HCkSshKey): wordbool; stdcall;

Authentication for SSH servers that require both a password and private key. (Most SSH servers are configured to require one or the other, but not both.)

Important: When reporting problems, please send the full contents of the LastErrorText property to support@chilkatsoft.com.

Returns True for success, False for failure.

More Information and Examples
top
AuthenticatePwPkAsync (1)
function CkSsh_AuthenticatePwPkAsync(objHandle: HCkSsh;
    username: PWideChar;
    password: PWideChar;
    privateKey: HCkSshKey): HCkTask; stdcall;

Creates an asynchronous task to call the AuthenticatePwPk method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
AuthenticateSecPw
function CkSsh_AuthenticateSecPw(objHandle: HCkSsh;
    login: HCkSecureString;
    password: HCkSecureString): wordbool; stdcall;
Introduced in version 9.5.0.71

The same as AuthenticatePw, except the login and passwords strings are passed in secure string objects.

Returns True for success, False for failure.

More Information and Examples
top
AuthenticateSecPwAsync (1)
function CkSsh_AuthenticateSecPwAsync(objHandle: HCkSsh;
    login: HCkSecureString;
    password: HCkSecureString): HCkTask; stdcall;
Introduced in version 9.5.0.71

Creates an asynchronous task to call the AuthenticateSecPw method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
AuthenticateSecPwPk
function CkSsh_AuthenticateSecPwPk(objHandle: HCkSsh;
    username: HCkSecureString;
    password: HCkSecureString;
    privateKey: HCkSshKey): wordbool; stdcall;
Introduced in version 9.5.0.71

The same as AuthenticatePwPk, except the login and passwords strings are passed in secure string objects.

Returns True for success, False for failure.

top
AuthenticateSecPwPkAsync (1)
function CkSsh_AuthenticateSecPwPkAsync(objHandle: HCkSsh;
    username: HCkSecureString;
    password: HCkSecureString;
    privateKey: HCkSshKey): HCkTask; stdcall;
Introduced in version 9.5.0.71

Creates an asynchronous task to call the AuthenticateSecPwPk method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelIsOpen
function CkSsh_ChannelIsOpen(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

Returns True if the channel indicated by channelNum is open. Otherwise returns False.

top
ChannelPoll
function CkSsh_ChannelPoll(objHandle: HCkSsh;
    channelNum: Integer;
    pollTimeoutMs: Integer): Integer; stdcall;

Polls for incoming data on an open channel. This method will read a channel, waiting at most pollTimeoutMs milliseconds for data to arrive. Return values are as follows:

-1 -- Error. Check the IsConnected property to see if the connection to the SSH server is still valid. Also, call ChannelIsOpen to see if the channel remains open. The LastErrorText property will contain more detailed information regarding the error.

-2 -- No additional data was received prior to the poll timeout.

>0 -- Additional data was received and the return value indicates how many bytes are available to be "picked up". Methods that read data on a channel do not return the received data directly. Instead, they return an integer to indicate how many bytes are available to be "picked up". An application picks up the available data by calling GetReceivedData or GetReceivedText.

=0 -- A zero can be returned if the channel EOF has already been received, or if the channel had already been closed.

top
ChannelPollAsync (1)
function CkSsh_ChannelPollAsync(objHandle: HCkSsh;
    channelNum: Integer;
    pollTimeoutMs: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelPoll method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelRead
function CkSsh_ChannelRead(objHandle: HCkSsh;
    channelNum: Integer): Integer; stdcall;

Reads incoming data on an open channel. This method will read a channel, waiting at most IdleTimeoutMs milliseconds for data to arrive. Return values are as follows:

-1 -- Error. Check the IsConnected property to see if the connection to the SSH server is still valid. Also, call ChannelIsOpen to see if the channel remains open. The LastErrorText property will contain more detailed information regarding the error.

-2 -- No additional data was received prior to the IdleTimeoutMs timeout.

>0 -- Additional data was received and the return value indicates how many bytes are available to be "picked up". Methods that read data on a channel do not return the received data directly. Instead, they return an integer to indicate how many bytes are available to be "picked up". An application picks up the available data by calling GetReceivedData or GetReceivedText.

=0 -- A zero can be returned if the channel EOF has already been received, or if the channel had already been closed.

top
ChannelReadAsync (1)
function CkSsh_ChannelReadAsync(objHandle: HCkSsh;
    channelNum: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelRead method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelReadAndPoll
function CkSsh_ChannelReadAndPoll(objHandle: HCkSsh;
    channelNum: Integer;
    pollTimeoutMs: Integer): Integer; stdcall;

Reads incoming data on an open channel and continues reading until no data arrives for pollTimeoutMs milliseconds. The first read will wait a max of IdleTimeoutMs milliseconds before timing out. Subsequent reads wait a max of pollTimeoutMs milliseconds before timing out.

The idea behind ChannelReadAndPoll is to capture the output of a shell command. One might imagine the typical sequence of events when executing a shell command to be like this: (1) client sends command to server, (2) server executes the command (i.e. it's computing...), potentially taking some amount of time, (3) output is streamed back to the client. It makes sense for the client to wait a longer period of time for the first data to arrive, but once it begins arriving, the timeout can be shortened. This is exactly what ChannelReadAndPoll does -- the first timeout is controlled by the IdleTimeoutMs property, while the subsequent reads (once output starts flowing) is controlled by pollTimeoutMs.

Return values are as follows:
-1 -- Error. Check the IsConnected property to see if the connection to the SSH server is still valid. Also, call ChannelIsOpen to see if the channel remains open. The LastErrorText property will contain more detailed information regarding the error.

-2 -- No additional data was received prior to the IdleTimeoutMs timeout.

>0 -- Additional data was received and the return value indicates how many bytes are available to be "picked up". Methods that read data on a channel do not return the received data directly. Instead, they return an integer to indicate how many bytes are available to be "picked up". An application picks up the available data by calling GetReceivedData or GetReceivedText.

=0 -- A zero can be returned if the channel EOF has already been received, or if the channel had already been closed.

top
ChannelReadAndPollAsync (1)
function CkSsh_ChannelReadAndPollAsync(objHandle: HCkSsh;
    channelNum: Integer;
    pollTimeoutMs: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelReadAndPoll method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelReadAndPoll2
function CkSsh_ChannelReadAndPoll2(objHandle: HCkSsh;
    channelNum: Integer;
    pollTimeoutMs: Integer;
    maxNumBytes: Integer): Integer; stdcall;

The same as ChannelReadAndPoll, except this method will return as soon as maxNumBytes is exceeded.

top
ChannelReadAndPoll2Async (1)
function CkSsh_ChannelReadAndPoll2Async(objHandle: HCkSsh;
    channelNum: Integer;
    pollTimeoutMs: Integer;
    maxNumBytes: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelReadAndPoll2 method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelReceivedClose
function CkSsh_ChannelReceivedClose(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

True if a CLOSE message has been received on the channel indicated by channelNum. When a CLOSE is received, no subsequent data should be sent in either direction -- the channel is closed in both directions.

top
ChannelReceivedEof
function CkSsh_ChannelReceivedEof(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

True if an EOF message has been received on the channel indicated by channelNum. When an EOF is received, no more data will be forthcoming on the channel. However, data may still be sent in the opposite direction.

top
ChannelReceivedExitStatus
function CkSsh_ChannelReceivedExitStatus(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

True if an exit status code was received on the channel. Otherwise False.

top
ChannelReceiveToClose
function CkSsh_ChannelReceiveToClose(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

Reads incoming data on an open channel until the channel is closed by the server. If successful, the number of bytes available to be "picked up" can be determined by calling GetReceivedNumBytes. The received data may be retrieved by calling GetReceivedData or GetReceivedText.

Returns True for success, False for failure.

top
ChannelReceiveToCloseAsync (1)
function CkSsh_ChannelReceiveToCloseAsync(objHandle: HCkSsh;
    channelNum: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelReceiveToClose method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelReceiveUntilMatch
function CkSsh_ChannelReceiveUntilMatch(objHandle: HCkSsh;
    channelNum: Integer;
    matchPattern: PWideChar;
    charset: PWideChar;
    caseSensitive: wordbool): wordbool; stdcall;

Reads incoming text data on an open channel until the received data matches the matchPattern. For example, to receive data until the string "Hello World" arrives, set matchPattern equal to "*Hello World*". charset indicates the character encoding of the text being received ("iso-8859-1" for example). caseSensitive may be set to True for case sensitive matching, or False for case insensitive matching.

Returns True if text data matching matchPattern was received and is available to be picked up by calling GetReceivedText (or GetReceivedTextS). IMPORTANT: This method may read beyond the matching text. Call GetReceivedTextS to extract only the data up-to and including the matching text.

Important Notes:

  • It's wise to set the ReadTimeoutMs property to a non-zero value to prevent an infinite wait if the matchPattern never arrives.
  • If using a shell session and SendReqPty was called, set the termType = "dumb". If terminal control codes get mixed into the output stream, it could disrupt matching.
  • Be aware of the StderrToStdout property setting. The default value is true, which means that stderr is mixed with stdout in the output stream. This could disrupt matching. Set StderrToStdout to false to prevent this possibility.

Returns True for success, False for failure.

top
ChannelReceiveUntilMatchAsync (1)
function CkSsh_ChannelReceiveUntilMatchAsync(objHandle: HCkSsh;
    channelNum: Integer;
    matchPattern: PWideChar;
    charset: PWideChar;
    caseSensitive: wordbool): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelReceiveUntilMatch method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelReceiveUntilMatchN
function CkSsh_ChannelReceiveUntilMatchN(objHandle: HCkSsh;
    channelNum: Integer;
    matchPatterns: HCkStringArray;
    charset: PWideChar;
    caseSensitive: wordbool): wordbool; stdcall;

The same as ChannelReceiveUntilMatch except that the method returns when any one of the match patterns specified in matchPatterns are received on the channel.

Important: It's wise to set the ReadTimeoutMs property to a non-zero value to prevent an infinite wait if of the matchPatterns ever arrives.

Returns True for success, False for failure.

More Information and Examples
top
ChannelReceiveUntilMatchNAsync (1)
function CkSsh_ChannelReceiveUntilMatchNAsync(objHandle: HCkSsh;
    channelNum: Integer;
    matchPatterns: HCkStringArray;
    charset: PWideChar;
    caseSensitive: wordbool): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelReceiveUntilMatchN method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelRelease
procedure CkSsh_ChannelRelease(objHandle: HCkSsh;
    channelNum: Integer) stdcall;
Introduced in version 9.5.0.44

Releases the internal memory resources for a channel previously opened by OpenSessionChannel, OpenCustomChannel, or OpenDirectTcpIpChannel. It is not absolutely necessary to call this method because the internal memory resources for all channels are automatically released when the SSH object instance is deleted/disposed. This method becomes necessary only when an extremely large number of channels within the same SSH object instance are opened, used, and closed over a long period of time.

top
ChannelSendClose
function CkSsh_ChannelSendClose(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

Sends a CLOSE message to the server for the channel indicated by channelNum. This closes both directions of the bidirectional channel.

Returns True for success, False for failure.

top
ChannelSendCloseAsync (1)
function CkSsh_ChannelSendCloseAsync(objHandle: HCkSsh;
    channelNum: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelSendClose method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelSendData
function CkSsh_ChannelSendData(objHandle: HCkSsh;
    channelNum: Integer;
    byteData: HCkByteData): wordbool; stdcall;

Sends byte data on the channel indicated by channelNum.

Returns True for success, False for failure.

top
ChannelSendDataAsync (1)
function CkSsh_ChannelSendDataAsync(objHandle: HCkSsh;
    channelNum: Integer;
    byteData: HCkByteData): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelSendData method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelSendEof
function CkSsh_ChannelSendEof(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

Sends an EOF for the channel indicated by channelNum. Once an EOF is sent, no additional data may be sent on the channel. However, the channel remains open and additional data may still be received from the server.

Returns True for success, False for failure.

top
ChannelSendEofAsync (1)
function CkSsh_ChannelSendEofAsync(objHandle: HCkSsh;
    channelNum: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelSendEof method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ChannelSendString
function CkSsh_ChannelSendString(objHandle: HCkSsh;
    channelNum: Integer;
    textData: PWideChar;
    charset: PWideChar): wordbool; stdcall;

Sends character data on the channel indicated by channelNum. The text is converted to the charset indicated by charset prior to being sent. A list of supported charset values may be found on this page: Supported Charsets.

Returns True for success, False for failure.

top
ChannelSendStringAsync (1)
function CkSsh_ChannelSendStringAsync(objHandle: HCkSsh;
    channelNum: Integer;
    textData: PWideChar;
    charset: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the ChannelSendString method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
CheckConnection
function CkSsh_CheckConnection(objHandle: HCkSsh): wordbool; stdcall;
Introduced in version 9.5.0.46

Returns True if the underlying TCP socket is connected to the SSH server.

top
ClearTtyModes
procedure CkSsh_ClearTtyModes(objHandle: HCkSsh) stdcall;

Clears the collection of TTY modes that are sent with the SendReqPty method.

top
Connect
function CkSsh_Connect(objHandle: HCkSsh;
    domainName: PWideChar;
    port: Integer): wordbool; stdcall;

Connects to the SSH server at domainName:port

The domainName may be a domain name or an IPv4 or IPv6 address in string format.

Internally, the following SSH connection protocol algorithms are supported:

  • Hostkey:
    1. ssh-ed25519
    2. rsa-sha2-256
    3. rsa-sha2-512
    4. ecdsa-sha2-nistp256
    5. ecdsa-sha2-nistp384
    6. ecdsa-sha2-nistp521
    7. ssh-rsa
    8. ssh-dss
  • Key Exchange:
    1. curve25519-sha256
    2. curve25519-sha256@libssh.org
    3. ecdh-sha2-nistp256
    4. ecdh-sha2-nistp384
    5. ecdh-sha2-nistp521
    6. diffie-hellman-group14-sha256
    7. diffie-hellman-group1-sha1
    8. diffie-hellman-group14-sha1
    9. diffie-hellman-group16-sha512
    10. diffie-hellman-group18-sha512
    11. diffie-hellman-group-exchange-sha256
    12. diffie-hellman-group-exchange-sha1
  • Ciphers:
    1. aes128-ctr
    2. aes256-ctr
    3. aes192-ctr
    4. aes128-cbc
    5. aes256-cbc
    6. aes192-cbc
    7. aes128-gcm@openssh.com
    8. aes256-gcm@openssh.com
    9. twofish256-cbc
    10. twofish128-cbc
    11. blowfish-cbc
    12. (also chacha20-poly1305@openssh.com if explicitly allowed by the application)
  • MAC Algorithms:
    1. hmac-sha2-256
    2. hmac-sha2-512
    3. hmac-sha1
    4. hmac-ripemd160
    5. hmac-sha1-96
    6. hmac-md5
    7. (also the following etm algorithms if explicitly allowed)
    8. hmac-sha1-etm@openssh.com
    9. hmac-sha2-256-etm@openssh.com
    10. hmac-sha2-512-etm@openssh.com
  • Compression:
    1. none
    2. zlib
    3. zlib@openssh.com

Important: All TCP-based Internet communications, regardless of the protocol (such as HTTP, FTP, SSH, IMAP, POP3, SMTP, etc.), and regardless of SSL/TLS, begin with establishing a TCP connection to a remote host:port. External security-related infrastructure such as software firewalls (Windows Firewall), hardware firewalls, anti-virus, at either source or destination (or both) can block the connection. If the connection fails, make sure to check all potential external causes of blockage.

Returns True for success, False for failure.

top
ConnectAsync (1)
function CkSsh_ConnectAsync(objHandle: HCkSsh;
    domainName: PWideChar;
    port: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the Connect method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ConnectThroughSsh
function CkSsh_ConnectThroughSsh(objHandle: HCkSsh;
    ssh: HCkSsh;
    hostname: PWideChar;
    port: Integer): wordbool; stdcall;
Introduced in version 9.5.0.55

Connects to an SSH server through an existing SSH connection. The ssh is an existing connected and authenticated SSH object. The connection to hostname:port is made through the existing SSH connection via port-forwarding. If successful, the connection is as follows: application => ServerSSH1 => ServerSSH2. (where ServerSSH1 is the ssh and ServerSSH2 is the SSH server at hostname:port) Once connected in this way, all communications are routed through ServerSSH1 to ServerSSH2. This includes authentication -- which means the application must still call one of the Authenticate* methods to authenticate with ServerSSH2.

Returns True for success, False for failure.

More Information and Examples
top
ConnectThroughSshAsync (1)
function CkSsh_ConnectThroughSshAsync(objHandle: HCkSsh;
    ssh: HCkSsh;
    hostname: PWideChar;
    port: Integer): HCkTask; stdcall;
Introduced in version 9.5.0.55

Creates an asynchronous task to call the ConnectThroughSsh method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ContinueKeyboardAuth
function CkSsh_ContinueKeyboardAuth(objHandle: HCkSsh;
    response: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__continueKeyboardAuth(objHandle: HCkSsh;
    response: PWideChar): PWideChar; stdcall;
Introduced in version 9.5.0.46

Continues keyboard-interactive authentication with the SSH server. The response is typically the password. If multiple responses are required (because there were multiple prompts in the infoRequest XML returned by StartKeyboardAuth), then the response should be formatted as XML (as shown below) otherwise the response simply contains the single response string.

<response>
    <response1>response to first prompt</response1>
    <response2>response to second prompt</response2>
    ...
    <responseN>response to Nth prompt</responseN>
</response>

If the interactive authentication completed with success or failure, the XML response will be:

<success>success_message</success>

or

<error>error_message</error>
If additional steps are required to complete the interactive authentication, then an XML string that provides the name, instruction, and prompts is returned. The XML has the following format:
 	<infoRequest numPrompts="N">
	    <name>name_string</name>
	    <instruction>instruction_string</instruction>
	    <prompt1 echo="1_or_0">prompt_string</prompt1>
	    ...
	    <promptN echo="1_or_0">prompt_string</promptN>
	</infoRequest>

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
ContinueKeyboardAuthAsync (1)
function CkSsh_ContinueKeyboardAuthAsync(objHandle: HCkSsh;
    response: PWideChar): HCkTask; stdcall;
Introduced in version 9.5.0.46

Creates an asynchronous task to call the ContinueKeyboardAuth method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
Disconnect
procedure CkSsh_Disconnect(objHandle: HCkSsh) stdcall;

Disconnects from the SSH server.

top
GetAuthMethods
function CkSsh_GetAuthMethods(objHandle: HCkSsh;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__getAuthMethods(objHandle: HCkSsh): PWideChar; stdcall;
Introduced in version 9.5.0.78

Queries the SSH server to find out which authentication methods it supports. Returns a string such as "publickey,password,keyboard-interactive".

This method should be called after connecting, but prior to authenticating. The method intentionally disconnects from the server after getting the authentication methods. An application may then connect again and authentication with a chosen method. (In most cases, an application knows in advance the type of authentication to be used, and this method is never called.)

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
GetAuthMethodsAsync (1)
function CkSsh_GetAuthMethodsAsync(objHandle: HCkSsh): HCkTask; stdcall;
Introduced in version 9.5.0.78

Creates an asynchronous task to call the GetAuthMethods method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
GetChannelExitStatus
function CkSsh_GetChannelExitStatus(objHandle: HCkSsh;
    channelNum: Integer): Integer; stdcall;

Returns the exit status code for a channel. This method should only be called if an exit status has been received. You may check to see if the exit status was received by calling ChannelReceivedExitStatus.

top
GetChannelNumber
function CkSsh_GetChannelNumber(objHandle: HCkSsh;
    index: Integer): Integer; stdcall;

Returns the channel number for the Nth open channel. Indexing begins at 0, and the number of currently open channels is indicated by the NumOpenChannels property. Returns -1 if the index is out of range.

top
GetChannelType
function CkSsh_GetChannelType(objHandle: HCkSsh;
    index: Integer;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__getChannelType(objHandle: HCkSsh;
    index: Integer): PWideChar; stdcall;

Returns a string describing the channel type for the Nth open channel. Channel types are: "session", "x11", "forwarded-tcpip", and "direct-tcpip".

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

top
GetHostKeyFP
function CkSsh_GetHostKeyFP(objHandle: HCkSsh;
    hashAlg: PWideChar;
    includeKeyType: wordbool;
    includeHashName: wordbool;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__getHostKeyFP(objHandle: HCkSsh;
    hashAlg: PWideChar;
    includeKeyType: wordbool;
    includeHashName: wordbool): PWideChar; stdcall;
Introduced in version 9.5.0.92

Returns the host key fingerprint of the server, which is automatically set after connecting to an SSH/SFTP server. The hashAlg can be any hash algorithm supported by Chilkat, such as "SHA256", "SHA384", "SHA512", "SHA1", "MD5", "SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512", etc.

If both includeKeyType and includeHashName are True, then the fingerprint string is formatted like this:

ssh-rsa SHA256:L7sQgnpnoBwRoyIYXAFBs8SdSnwtyYmhXs1p/mQDK...
If includeKeyType is True and includeHashName is False:
ssh-rsa L7sQgnpnoBwRoyIYXAFBs8SdSnwtyYmhXs1p/mQDK...
If includeKeyType is False:and includeHashName is True
SHA256:L7sQgnpnoBwRoyIYXAFBs8SdSnwtyYmhXs1p/mQDK...
If includeKeyType is False:and includeHashName is False:and
L7sQgnpnoBwRoyIYXAFBs8SdSnwtyYmhXs1p/mQDK...

SSH host key types can be: ssh-rsa, ecdsa-*-* (such as ecdsa-sha2-nistp256), ssh-ed25519, and ssh-dss.

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
GetReceivedData
function CkSsh_GetReceivedData(objHandle: HCkSsh;
    channelNum: Integer;
    outBytes: HCkByteData): wordbool; stdcall;

Returns the accumulated data received on the channel indicated by channelNum and clears the channel's internal receive buffer.

Returns True for success, False for failure.

top
GetReceivedDataN
function CkSsh_GetReceivedDataN(objHandle: HCkSsh;
    channelNum: Integer;
    maxNumBytes: Integer;
    outBytes: HCkByteData): wordbool; stdcall;

Same as GetReceivedData, but a maximum of maxNumBytes bytes is returned.

Returns True for success, False for failure.

top
GetReceivedNumBytes
function CkSsh_GetReceivedNumBytes(objHandle: HCkSsh;
    channelNum: Integer): Integer; stdcall;

Returns the number of bytes available in the internal receive buffer for the specified channelNum. The received data may be retrieved by calling GetReceivedData or GetReceivedText.

top
GetReceivedStderr
function CkSsh_GetReceivedStderr(objHandle: HCkSsh;
    channelNum: Integer;
    outBytes: HCkByteData): wordbool; stdcall;
Introduced in version 9.5.0.48

Returns the accumulated stderr bytes received on the channel indicated by channelNum and clears the channel's internal stderr receive buffer.

Note: If the StderrToStdout property is set to True, then stderr is automatically redirected to stdout. This is the default behavior. The following methods can be called to retrieve the channel's stdout: GetReceivedData, GetReceivedDataN, GetReceivedText, and GetReceivedTextS.

Returns True for success, False for failure.

top
GetReceivedStderrText
function CkSsh_GetReceivedStderrText(objHandle: HCkSsh;
    channelNum: Integer;
    charset: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__getReceivedStderrText(objHandle: HCkSsh;
    channelNum: Integer;
    charset: PWideChar): PWideChar; stdcall;

Returns the accumulated stderr text received on the channel indicated by channelNum and clears the channel's internal receive buffer. The charset indicates the charset of the character data in the internal receive buffer. A list of supported charset values may be found on this page: Supported Charsets.

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

top
GetReceivedText
function CkSsh_GetReceivedText(objHandle: HCkSsh;
    channelNum: Integer;
    charset: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__getReceivedText(objHandle: HCkSsh;
    channelNum: Integer;
    charset: PWideChar): PWideChar; stdcall;

Returns the accumulated text received on the channel indicated by channelNum and clears the channel's internal receive buffer. The charset indicates the charset of the character data in the internal receive buffer. A list of supported charset values may be found on this page: Supported Charsets.

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

top
GetReceivedTextS
function CkSsh_GetReceivedTextS(objHandle: HCkSsh;
    channelNum: Integer;
    substr: PWideChar;
    charset: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__getReceivedTextS(objHandle: HCkSsh;
    channelNum: Integer;
    substr: PWideChar;
    charset: PWideChar): PWideChar; stdcall;

The same as GetReceivedText, except only the text up to and including substr is returned. The text returned is removed from the internal receive buffer. If the substr was not found in the internal receive buffer, an empty string is returned and the internal receive buffer is not modified.

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

top
LastJsonData
function CkSsh_LastJsonData(objHandle: HCkSsh): HCkJsonObject; stdcall;
Introduced in version 9.5.0.79

Provides information about what transpired in the last method called. For many methods, there is no information. For some methods, details about what transpired can be obtained via LastJsonData.

Returns nil on failure

top
LoadTaskCaller
function CkSsh_LoadTaskCaller(objHandle: HCkSsh;
    task: HCkTask): wordbool; stdcall;
Introduced in version 9.5.0.80

Loads the caller of the task's async method.

Returns True for success, False for failure.

top
OpenCustomChannel
function CkSsh_OpenCustomChannel(objHandle: HCkSsh;
    channelType: PWideChar): Integer; stdcall;

Opens a custom channel with a custom server that uses the SSH protocol. The channelType is application-defined.

If successful, the channel number is returned. This is the number that should be passed to any method requiring a channel number. A -1 is returned upon failure.

top
OpenCustomChannelAsync (1)
function CkSsh_OpenCustomChannelAsync(objHandle: HCkSsh;
    channelType: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the OpenCustomChannel method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
OpenDirectTcpIpChannel
function CkSsh_OpenDirectTcpIpChannel(objHandle: HCkSsh;
    targetHostname: PWideChar;
    targetPort: Integer): Integer; stdcall;

Open a direct-tcpip channel for port forwarding. Data sent on the channel via ChannelSend* methods is sent to the SSH server and then forwarded to targetHostname:targetPort. The SSH server automatically forwards data received from targetHostname:targetPort to the SSH client. Therefore, calling ChannelRead* and ChannelReceive* methods is equivalent to reading directly from targetHostname:targetPort.

If successful, the channel number is returned. This is the number that should be passed to any method requiring a channel number. A -1 is returned upon failure.

top
OpenDirectTcpIpChannelAsync (1)
function CkSsh_OpenDirectTcpIpChannelAsync(objHandle: HCkSsh;
    targetHostname: PWideChar;
    targetPort: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the OpenDirectTcpIpChannel method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
OpenSessionChannel
function CkSsh_OpenSessionChannel(objHandle: HCkSsh): Integer; stdcall;

Opens a new session channel. Almost everything you will do with the Chilkat SSH component will involve opening a session channel. The normal sequence of operation is typically this: 1) Connect to the SSH server. 2) Authenticate. 3) Open a session channel. 4) do something on the channel such as opening a shell, execute a command, etc.

If successful, the channel number is returned. This is the number that should be passed to any method requiring a channel number. A -1 is returned upon failure.

top
OpenSessionChannelAsync (1)
function CkSsh_OpenSessionChannelAsync(objHandle: HCkSsh): HCkTask; stdcall;

Creates an asynchronous task to call the OpenSessionChannel method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
PeekReceivedText
function CkSsh_PeekReceivedText(objHandle: HCkSsh;
    channelNum: Integer;
    charset: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__peekReceivedText(objHandle: HCkSsh;
    channelNum: Integer;
    charset: PWideChar): PWideChar; stdcall;

This is the same as GetReceivedText, except the internal receive buffer is not cleared.

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

top
QuickCmdCheck
function CkSsh_QuickCmdCheck(objHandle: HCkSsh;
    pollTimeoutMs: Integer): Integer; stdcall;
Introduced in version 9.5.0.65

Returns a channel number for a completed command that was previously sent via QuickCmdSend. Returns -1 if no commands have yet completed. The pollTimeoutMs indicates how long to wait (in milliseconds) for any command in progress (on any channel) to complete before returning -1.

Returns -2 if an error occurred (for example, if the connection to the SSH server was lost while checking for responses).

top
QuickCmdCheckAsync (1)
function CkSsh_QuickCmdCheckAsync(objHandle: HCkSsh;
    pollTimeoutMs: Integer): HCkTask; stdcall;
Introduced in version 9.5.0.65

Creates an asynchronous task to call the QuickCmdCheck method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
QuickCmdSend
function CkSsh_QuickCmdSend(objHandle: HCkSsh;
    command: PWideChar): Integer; stdcall;
Introduced in version 9.5.0.65

Sends a command and returns the channel number for the command that has started. This is the equivalent of calling OpenSessionChannel, followed by SendReqExec. A value of -1 is returned on failure.

The ReqExecCharset property controls the charset used for the command that is sent.

Important: When reporting problems, please send the full contents of the LastErrorText property to support@chilkatsoft.com.

top
QuickCmdSendAsync (1)
function CkSsh_QuickCmdSendAsync(objHandle: HCkSsh;
    command: PWideChar): HCkTask; stdcall;
Introduced in version 9.5.0.65

Creates an asynchronous task to call the QuickCmdSend method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
QuickCommand
function CkSsh_QuickCommand(objHandle: HCkSsh;
    command: PWideChar;
    charset: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__quickCommand(objHandle: HCkSsh;
    command: PWideChar;
    charset: PWideChar): PWideChar; stdcall;
Introduced in version 9.5.0.65

Simplified method for executing a remote command and getting the complete output. This is the equivalent of calling OpenSessionChannel, followed by SendReqExec, then ChannelReceiveToClose, and finally GetReceivedText.

The charset indicates the charset of the command's output (such as "utf-8" or "ansi"). A list of supported charset values may be found on this page: Supported Charsets.

The ReqExecCharset property controls the charset used for the command that is sent.

Important: When reporting problems, please send the full contents of the LastErrorText property to support@chilkatsoft.com.

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
QuickCommandAsync (1)
function CkSsh_QuickCommandAsync(objHandle: HCkSsh;
    command: PWideChar;
    charset: PWideChar): HCkTask; stdcall;
Introduced in version 9.5.0.65

Creates an asynchronous task to call the QuickCommand method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
QuickShell
function CkSsh_QuickShell(objHandle: HCkSsh): Integer; stdcall;
Introduced in version 9.5.0.65

Simplified method for starting a remote shell session. It is the equivalent of calling OpenSessionChannel, followed by SendReqPty, and finally SendReqShell.

Returns the SSH channel number for the session, or -1 if not successful.

Important: When reporting problems, please send the full contents of the LastErrorText property to support@chilkatsoft.com.

top
QuickShellAsync (1)
function CkSsh_QuickShellAsync(objHandle: HCkSsh): HCkTask; stdcall;
Introduced in version 9.5.0.65

Creates an asynchronous task to call the QuickShell method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
ReKey
function CkSsh_ReKey(objHandle: HCkSsh): wordbool; stdcall;

Initiates a re-key with the SSH server. The ReKey method does not return until the key re-exchange is complete.

RFC 4253 (the SSH Transport Layer Protocol) recommends that keys be changed after each gigabyte of transmitted data or after each hour of connection time, whichever comes sooner. Key re-exchange is a public-key operation and requires a fair amount of processing power and should not be performed too often. Either side (client or server) may initiate a key re-exchange at any time.

In most cases, a server will automatically initiate key re-exchange whenever it deems necessary, and the Chilkat SSH component handles these transparently. For example, if the Chilkat SSH component receives a re-key message from the server while in the process of receiving data on a channel, it will automatically handle the key re-exchange and the application will not even realize that an underlying key re-exchange occurred.

Returns True for success, False for failure.

top
ReKeyAsync (1)
function CkSsh_ReKeyAsync(objHandle: HCkSsh): HCkTask; stdcall;

Creates an asynchronous task to call the ReKey method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendIgnore
function CkSsh_SendIgnore(objHandle: HCkSsh): wordbool; stdcall;

Sends an IGNORE message to the SSH server. This is one way of verifying that the connection to the SSH server is open and valid. The SSH server does not respond to an IGNORE message. It simply ignores it. IGNORE messages are not associated with a channel (in other words, you do not need to first open a channel prior to sending an IGNORE message).

Returns True for success, False for failure.

More Information and Examples
top
SendIgnoreAsync (1)
function CkSsh_SendIgnoreAsync(objHandle: HCkSsh): HCkTask; stdcall;

Creates an asynchronous task to call the SendIgnore method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqExec
function CkSsh_SendReqExec(objHandle: HCkSsh;
    channelNum: Integer;
    commandLine: PWideChar): wordbool; stdcall;

Initiates execution of a command on the channel specified by channelNum. The commandLine contains the full command line including any command-line parameters (just as you would type the command at a shell prompt).

This is the equivalent of running a command on a remote server via the "rexec" command. See rexec command. It is not a shell session.

Important: A channel only exists for a single request. You may not call SendReqExec multiple times on the same open channel. The reason is that the SSH server automatically closes the channel at the end of the exec. The solution is to call OpenSessionChannel to get a new channel, and then call SendReqExec using the new channel. It is OK to have more than one channel open simultaneously.

Charset: The ReqExecCharset property has been added in version 9.5.0.47. This can be set to control the character encoding of the command sent to the server. The default is ANSI. A likely alternative value is "utf-8".

Returns True for success, False for failure.

top
SendReqExecAsync (1)
function CkSsh_SendReqExecAsync(objHandle: HCkSsh;
    channelNum: Integer;
    commandLine: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqExec method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqPty
function CkSsh_SendReqPty(objHandle: HCkSsh;
    channelNum: Integer;
    termType: PWideChar;
    widthInChars: Integer;
    heightInChars: Integer;
    widthInPixels: Integer;
    heightInPixels: Integer): wordbool; stdcall;

Requests a pseudo-terminal for a session channel. If the termType is a character oriented terminal ("vt100" for example), then widthInChars and heightInChars would be set to non-zero values, while widthInPixels and heightInPixels may be set to 0. If termType is pixel-oriented, such as "xterm", the reverse is true (i.e. set widthInPixels and heightInPixels, but set widthInChars and heightInChars equal to 0).

In most cases, you probably don't even want terminal emulation. In that case, try setting termType = "dumb". Terminal emulation causes terminal escape sequences to be included with shell command output. A "dumb" terminal should have no escape sequences.

Some SSH servers allow a shell to be started (via the SendReqShell method) without the need to first request a pseudo-terminal. The normal sequence for starting a remote shell is as follows:

1) Connect
2) Authenticate
3) OpenSessionChannel
4) Request a PTY via this method if necessary.
5) Start a shell by calling SendReqShell

Returns True for success, False for failure.

More Information and Examples
top
SendReqPtyAsync (1)
function CkSsh_SendReqPtyAsync(objHandle: HCkSsh;
    channelNum: Integer;
    termType: PWideChar;
    widthInChars: Integer;
    heightInChars: Integer;
    widthInPixels: Integer;
    heightInPixels: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqPty method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqSetEnv
function CkSsh_SendReqSetEnv(objHandle: HCkSsh;
    channelNum: Integer;
    name: PWideChar;
    value: PWideChar): wordbool; stdcall;

Sets an environment variable in the remote shell.

Returns True for success, False for failure.

top
SendReqSetEnvAsync (1)
function CkSsh_SendReqSetEnvAsync(objHandle: HCkSsh;
    channelNum: Integer;
    name: PWideChar;
    value: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqSetEnv method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqShell
function CkSsh_SendReqShell(objHandle: HCkSsh;
    channelNum: Integer): wordbool; stdcall;

Starts a shell on an open session channel. Some SSH servers require that a PTY (pseudo-terminal) first be requested prior to starting a shell. In that case, call SendReqPty prior to calling this method. Once a shell is started, commands may be sent by calling ChannelSendString. (Don't forget to terminate commands with a CRLF).

Returns True for success, False for failure.

More Information and Examples
top
SendReqShellAsync (1)
function CkSsh_SendReqShellAsync(objHandle: HCkSsh;
    channelNum: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqShell method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqSignal
function CkSsh_SendReqSignal(objHandle: HCkSsh;
    channelNum: Integer;
    signalName: PWideChar): wordbool; stdcall;

Delivers a signal to the remote process/service. signalName is one of the following: ABRT, ALRM, FPE, HUP, ILL, INT, KILL, PIPE, QUIT, SEGV, TERM, USR1, USR2. (Obviously, these are UNIX signals, so the remote SSH server would need to be a Unix/Linux system.)

Returns True for success, False for failure.

top
SendReqSignalAsync (1)
function CkSsh_SendReqSignalAsync(objHandle: HCkSsh;
    channelNum: Integer;
    signalName: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqSignal method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqSubsystem
function CkSsh_SendReqSubsystem(objHandle: HCkSsh;
    channelNum: Integer;
    subsystemName: PWideChar): wordbool; stdcall;

Executes a pre-defined subsystem. The SFTP protocol (Secure File Transfer Protocol) is started by the Chilkat SFTP component by starting the "sftp" subsystem.

Returns True for success, False for failure.

top
SendReqSubsystemAsync (1)
function CkSsh_SendReqSubsystemAsync(objHandle: HCkSsh;
    channelNum: Integer;
    subsystemName: PWideChar): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqSubsystem method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqWindowChange
function CkSsh_SendReqWindowChange(objHandle: HCkSsh;
    channelNum: Integer;
    widthInChars: Integer;
    heightInRows: Integer;
    pixWidth: Integer;
    pixHeight: Integer): wordbool; stdcall;

When the client-side window (terminal) size changes, this message may be sent to the server to inform it of the new size.

top
SendReqWindowChangeAsync (1)
function CkSsh_SendReqWindowChangeAsync(objHandle: HCkSsh;
    channelNum: Integer;
    widthInChars: Integer;
    heightInRows: Integer;
    pixWidth: Integer;
    pixHeight: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqWindowChange method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqX11Forwarding
function CkSsh_SendReqX11Forwarding(objHandle: HCkSsh;
    channelNum: Integer;
    singleConnection: wordbool;
    authProt: PWideChar;
    authCookie: PWideChar;
    screenNum: Integer): wordbool; stdcall;

Allows the client to send an X11 forwarding request to the server. Chilkat only provides this functionality because it is a message defined in the SSH connection protocol. Chilkat has no advice for when or why it would be needed.

top
SendReqX11ForwardingAsync (1)
function CkSsh_SendReqX11ForwardingAsync(objHandle: HCkSsh;
    channelNum: Integer;
    singleConnection: wordbool;
    authProt: PWideChar;
    authCookie: PWideChar;
    screenNum: Integer): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqX11Forwarding method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SendReqXonXoff
function CkSsh_SendReqXonXoff(objHandle: HCkSsh;
    channelNum: Integer;
    clientCanDo: wordbool): wordbool; stdcall;

This method should be ignored and not used.

top
SendReqXonXoffAsync (1)
function CkSsh_SendReqXonXoffAsync(objHandle: HCkSsh;
    channelNum: Integer;
    clientCanDo: wordbool): HCkTask; stdcall;

Creates an asynchronous task to call the SendReqXonXoff method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
SetAllowedAlgorithms
function CkSsh_SetAllowedAlgorithms(objHandle: HCkSsh;
    json: HCkJsonObject): wordbool; stdcall;
Introduced in version 9.5.0.99

Provides a way to specific the exact set of algorithms allowed for the connection.

Returns True for success, False for failure.

More Information and Examples
top
SetTtyMode
function CkSsh_SetTtyMode(objHandle: HCkSsh;
    ttyName: PWideChar;
    ttyValue: Integer): wordbool; stdcall;

Sets a TTY mode that is included in the SendReqPty method call. Most commonly, it is not necessary to call this method at all. Chilkat has no recommendations or expertise as to why or when a particular mode might be useful. This capability is provided because it is defined in the SSH connection protocol specification.

This method can be called multiple times to set many terminal mode flags (one per call).

The ttyValue is an integer, typically 0 or 1. Valid ttyName flag names include: VINTR, VQUIT, VERASE, VKILL, VEOF, VEOL, VEOL2, VSTART, VSTOP, VSUSP, VDSUSP, VREPRINT, VWERASE, VLNEXT, VFLUSH, VSWTCH, VSTATUS, VDISCARD, IGNPAR, PARMRK, INPCK, ISTRIP, INLCR, IGNCR, ICRNL, IUCLC, IXON, IXANY, IXOFF, IMAXBEL, ISIG, ICANON, XCASE, ECHO, ECHOE, ECHOK, ECHONL, NOFLSH, TOSTOP, IEXTEN, ECHOCTL, ECHOKE, PENDIN, OPOST, OLCUC, ONLCR, OCRNL, ONOCR, ONLRET, CS7, CS8, PARENB, PARODD, TTY_OP_ISPEED, TTY_OP_OSPEED

top
StartKeyboardAuth
function CkSsh_StartKeyboardAuth(objHandle: HCkSsh;
    login: PWideChar;
    outStr: HCkString): wordbool; stdcall;
function CkSsh__startKeyboardAuth(objHandle: HCkSsh;
    login: PWideChar): PWideChar; stdcall;
Introduced in version 9.5.0.46

Begins keyboard-interactive authentication with the SSH server. Returns an XML string providing the name, instruction, and prompts. The XML has the following format:

 	<infoRequest numPrompts="N">
	    <name>name_string</name>
	    <instruction>instruction_string</instruction>
	    <prompt1 echo="1_or_0">prompt_string</prompt1>
	    ...
	    <promptN echo="1_or_0">prompt_string</promptN>
	</infoRequest>

If the authentication immediately succeeds because no password is required, or immediately fails, the XML response can be:

<success>success_message</success>

or

<error>error_message</error>

Returns True for success, False for failure.

See the notes about PWideChar memory ownership and validity.

More Information and Examples
top
StartKeyboardAuthAsync (1)
function CkSsh_StartKeyboardAuthAsync(objHandle: HCkSsh;
    login: PWideChar): HCkTask; stdcall;
Introduced in version 9.5.0.46

Creates an asynchronous task to call the StartKeyboardAuth method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top
WaitForChannelMessage
function CkSsh_WaitForChannelMessage(objHandle: HCkSsh;
    pollTimeoutMs: Integer): Integer; stdcall;
Introduced in version 9.5.0.48

The pollTimeoutMs is the number of milliseconds to wait. To poll, pass a value of 0 in pollTimeoutMs. Waits for an incoming message on any channel. This includes data, EOF, CLOSE, etc. If a message arrives in the alotted time, the channel number is returned. A value of -1 is returned for a timeout, and -2 for any other errors such as if the connection is lost.

Note: If a channel number is returned, the message must still be read by calling a method such as ChannelRead, ChannelReceiveUntilMatch, etc. Once the message is actually received, it may be collected by calling GetReceivedText, GetReceivedData, etc.

top
WaitForChannelMessageAsync (1)
function CkSsh_WaitForChannelMessageAsync(objHandle: HCkSsh;
    pollTimeoutMs: Integer): HCkTask; stdcall;
Introduced in version 9.5.0.48

Creates an asynchronous task to call the WaitForChannelMessage method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)

Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.

Returns nil on failure

top

Events

Chilkat supports event callbacks for the Delphi DLL starting in version 9.5.0.82.

AbortCheck
function MyAbortCheck(): Integer; cdecl;
Introduced in version 9.5.0.82

Provides the opportunity for a method call to be aborted. The AbortCheck event is fired periodically based on the value of the HeartbeatMs property. If HeartbeatMs is 0, then no AbortCheck events will fire. As an example, to fire 5 AbortCheck events per second, set the HeartbeatMs property equal to 200. Return True to abort; return False to continue (not abort)

More Information and Examples
top
PercentDone
function MyPercentDone(pctDone: Integer): Integer; cdecl;
Introduced in version 9.5.0.82

Provides the percentage completed for any method that involves network communications or time-consuming processing (assuming it is a method where a percentage completion can be measured). This event is only fired when it is possible to know a percentage completion, and when it makes sense to express the operation as a percentage completed. The pctDone argument will have a value from 1 to 100. For operations (Chilkat method calls) that complete very quickly, the number of PercentDone callbacks will vary, but the final callback should have a value of 100. For long running operations, no more than one callback per percentage point will occur (for example: 1, 2, 3, ... 98, 99, 100).

The PercentDone callback counts as an AbortCheck event. For method calls that complete quickly such that PercentDone events fire, it may be that AbortCheck events don't fire because the opportunity to abort is already provided in the PercentDone callback. For time consuming operations, where the amount of time between PercentDone callbacks are long, AbortCheck callbacks may be used to allow for the operation to be aborted in a more responsive manner.

Return True to abort; return False to continue (not abort)

More Information and Examples
top
ProgressInfo
procedure MyProgressInfo(name: PWideChar; value: PWideChar) cdecl;
Introduced in version 9.5.0.82

A general name/value event that provides information about what is happening during a method call. To find out what information is available, write code to handle this event and log the name/value pairs. Most are self-explanatory.

More Information and Examples
top
TaskCompleted
procedure MyTaskCompleted(task: HCkTask) cdecl;
Introduced in version 9.5.0.82

Called in the background thread when an asynchronous task completes.

top