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 |
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
- SSH.CloseChannel
- SSH.Execute
- SSH.HostKey
- SSH.IsAuthenticated
- SSH.Release
- SSH.SessionHandshake
- SSH.Tunnel.Run
- SSH.UserAuthKeyboardInteractive
- SSH.UserAuthList
- SSH.UserAuthPassword
Example Databases
This function checks for a license.
Created 29th May 2016, last changed 12nd November 2017