SSH Shell Tutorial
Applies to: Rebex Total Pack, Rebex SSH Pack, Rebex SSH Shell
Table of content
About Rebex SSH shell
Rebex SSH Shell library is an SSH shell, Telnet and ANSI terminal emulation library for .NET languages (such as C# or VB.NET). It makes it easy to execute commands on Unix/Windows SSH or telnet servers and add terminal emulation capabilities to your applications.
SSH is nearly ubiquitous on Unix and Unix-like systems, with OpenSSH being the most common implementation. There is also a growing number of SSH servers for Windows as well.
Most SSH servers also implement SFTP - a powerful secure file transfer protocol. To take advantage of it, use our SFTP library. An SFTP + SSH bundle is also available.
Namespaces and assemblies
To use Rebex SSH Shell, you have to reference
the Rebex.Common.dll, Rebex.Networking.dll, Rebex.Telnet.dll,
Rebex.SshShell.dll
and Rebex.Terminal.dll assemblies in your project.
These contain Ssh
, Shell
, TerminalControl
/SshTerminalControl
,
VirtualTerminal
and other classes
in Rebex.Net and Rebex.TerminalEmulation namespaces.
In your source files, import the following namespace:
using Rebex.Net; using Rebex.TerminalEmulation;
Imports Rebex.Net Imports Rebex.TerminalEmulation
Executing simple commands
Executing simple commands using SSH is very easy - just connect to the server, authenticate and call
RunCommand
method.
using (var ssh = new Rebex.Net.Ssh()) { // connect and log in ssh.Connect(serverName); ssh.Login(username, password); // execute a simple command string response = ssh.RunCommand("echo Hello world!"); // display the response Console.WriteLine(response); }
Using ssh = New Rebex.Net.Ssh() ' connect and log in ssh.Connect(serverName) ssh.Login(username, password) ' execute a simple command Dim response As String = ssh.RunCommand("echo Hello world!") ' display the response Console.WriteLine(response) End Using
Tip: RunCommand
can only be used to execute commands that don't require any user input. To script
advanced commands,
use Scripting
object instead.
Scripting complex commands
To execute more commands using a single shell, or to execute commands that actually need some kind of user input,
use the powerful Scripting
object:
using (var ssh = new Rebex.Net.Ssh()) { // connect and log in ssh.Connect(serverName); ssh.Login(username, password); // start a scripting session Scripting scripting = ssh.StartScripting(); // automatically detect remote prompt scripting.DetectPrompt(); // execute command scripting.SendCommand("echo Hello world!"); // read its response string response = scripting.ReadUntilPrompt(); // execute more commands // ... // display the response Console.WriteLine(response); }
Using ssh = New Rebex.Net.Ssh() ' connect and log in ssh.Connect(serverName) ssh.Login(username, password) ' start a scripting session Dim scripting As Scripting = ssh.StartScripting() ' automatically detect remote prompt scripting.DetectPrompt() ' execute command scripting.SendCommand("echo Hello world!") ' read its response Dim response As String = scripting.ReadUntilPrompt() ' execute more commands ' ... ' display the response Console.WriteLine(response) End Using
Tip: Check out the list of Scripting
features.
Tip: The Scripting
object can be used to script TerminalControl
or
VirtualTerminal
objects as well.
More sample code
- Connecting to SSH and Telnet servers
- Authentication options
- Terminal Emulation
- Windows Forms Terminal Control
- Scripting
- Screen scraping
- Events
- Communication logging and replay
- Proxies and custom sockets
- Security
- SSH core
- Private keys
- SSIS, SQL CLR, PowerShell
- Standards and platform support
- Compatibility
Back to tutorial list...