Components All New MacOS Windows Linux iOS
Examples Mac & Win Server Client Guides Statistic FMM Blog Deprecated Old

SSH.New

Creates a new SSH session.

Component Version macOS Windows Linux Server iOS SDK
SSH 6.3 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "SSH.New" )

Parameters

none

Result

Returns reference number or error.

Description

Creates a new SSH session.
Please use SSH.Release later to free memory.

If you just need SSH file transfers, please use CURL functions.

Examples

New session and later free it:

Set Variable [$ssh; Value:MBS( "SSH.New" )]
# later
Set Variable [$r; Value:MBS( "SSH.Release"; $ssh )]

Full example:

# Start a new SSH session
Set Variable [$ssh; Value:MBS( "SSH.New" )]
# Connect to an IP
Set Variable [$r; Value:MBS( "SSH.Connect"; $ssh; SSH::Host; SSH::Port )]
If [MBS("IsError")]
    Show Custom Dialog ["Connect error"; $r]
Else
    # Run the session handshake.
    Set Variable [$r; Value:MBS( "SSH.SessionHandshake"; $ssh)]
    If [MBS("IsError")]
        Show Custom Dialog ["Connect error"; $r]
    Else
        # We can show the hostkey. You can compare it to known hostkey.
        Set Field [SSH::HostKeyHash; MBS( "SSH.HostKey"; $ssh )]
        # We query supported authentication ways
        Set Variable [$authuserlist; Value:MBS( "SSH.UserAuthList"; $ssh; SSH::Username)]
        Set Field [SSH::UserAuthList; $authuserlist]
        Set Variable [$pos1; Value:Position ( $authuserlist ; "password"; 1; 1 )]
        Set Variable [$pos2; Value:Position ( $authuserlist ; "keyboard-interactive"; 1; 1 )]
        Set Variable [$pos3; Value:Position ( $authuserlist ; "publickey"; 1; 1 )]
        If [$pos1 > 0]
            # Authenticate with password
            Set Variable [$r; Value:MBS( "SSH.UserAuthPassword"; $ssh; SSH::Username; SSH::Password )]
            If [MBS("IsError")]
                Show Custom Dialog ["Connect error"; $r]
            End If
        Else If [$pos2 > 0]
            # Authenticate with answering question. Plugin passes password for answer.
            Set Variable [$r; Value:MBS( "SSH.UserAuthKeyboardInteractive"; $ssh; SSH::Username; SSH::Password )]
            If [MBS("IsError")]
                Show Custom Dialog ["Connect error"; $r]
            End If
        Else If [$pos3 > 0]
            # Authenticate with public key file
            Set Variable [$r; Value:MBS( "SSH.UserAuthPublicKey"; $ssh; SSH::Username; "your key path"; "your key path"; SSH::Password )]
            If [MBS("IsError")]
                Show Custom Dialog ["Connect error"; $r]
            End If
        End If
        If [MBS( "SSH.IsAuthenticated"; $ssh ) ≠ 1]
            Show Custom Dialog ["Authentication"; "no authenticated. Supported ways: " & $authuserlist]
        Else
            # Start a new channel
            Set Variable [$r; Value:MBS( "SSH.OpenSession"; $ssh )]
            If [MBS("IsError")]
                Show Custom Dialog ["Connect error"; $r]
            Else
                # Execute a command
                Set Variable [$r; Value:MBS( "SSH.Execute"; $ssh; SSH::Command )]
                If [MBS("IsError")]
                    Show Custom Dialog ["Connect error"; $r]
                Else
                    # We read text in several chunks until no new text is coming any more:
                    Set Variable [$text; Value:""]
                    Loop
                        Pause/Resume Script [Duration (seconds): ,1]
                        # Read some text:
                        Set Variable [$newtext; Value:MBS( "SSH.ReadText"; $ssh; 10000; "UTF8" )]
                        If [MBS("iserror") = 0]
                            If [Length($newText) > 0]
                                Set Variable [$text; Value:$text & $newText]
                            End If
                            Exit Loop If [Length($newText) = 0]
                        End If
                    End Loop
                    Set Field [SSH::Result; $text]
                End If
            End If
            # Close channel
            Set Variable [$r; Value:MBS( "SSH.CloseChannel"; $ssh )]
            # Disconnect
            Set Variable [$r; Value:MBS( "SSH.Disconnect"; $ssh )]
        End If
    End If
End If
# Release memory.
Set Variable [$r; Value:MBS( "SSH.Release"; $ssh )]

See also

Example Databases

This function checks for a license.

Created 29th May 2016, last changed 12nd November 2017


SSH.List - SSH.OpenSession