ActiveXperts Network Component Ssh Object
SSH Secure Shell allows secure network services over an insecure network, such as the Internet.
The Secure Shell concept originated on UNIX as a replacement for the insecure "Berkeley services", that is, the rsh , rcp, and rlogin commands. SSH Secure Shell replaces other, insecure terminal applications (such as Telnet and FTP). It allows you to securely login to remote host computers, to execute commands safely in a remote computer, to securely copy remote files, to forward X11 sessions (on UNIX), and to provide secure encrypted and authenticated communications between two non-trusted hosts. Also arbitrary TCP/IP ports can be forwarded over the secure channel, enabling secure connection, for example, to an email service.
SSH Secure Shell with its array of unmatched security features is an essential tool in today's network environment. It is a powerful guardian against the numerous security hazards that nowadays threaten network communications.
With the Network Component Ssh object, you can login onto a remote machine running the SSH daemon, and execute a command or shell script. It has no user interface by itself: standard error and standard output are not copied to the console, but are copied to the corresponding object properties (StdErr and StdOut) instead. There are two ways to authenticate: by using a password or by using a 'private key'.
The Network Component Ssh object has the same functionality as the well-known PuTTY/PLink command-line utility, except that it has no user interface by itself: standard error and standard output are not copied to the console, but are copied to the corresponding object properties (StdErr and StdOut) instead.
The Ssh object is part of the Network Component. Overview of all Network Component objects:
DnsServer & DnsRecord - Ftp & FtpFile - Http - Icmp - IPtoCountry - Msn - Ntp - Radius - Rsh - Scp - SFtp - Ssh - SnmpManager - SnmpTrapManager - SnmpMibBrowser - Tcp - Tftp - TraceRoute - Udp - Xen - Wake-on-LAN - Xen (Citrix)
Ssh Sample code
Visual Basic .NET sample: Execute a script on a remote LINUX machine using SSH
Imports AxNetwork Public Class SshForm Inherits System.Windows.Forms.Form Private objSsh As Ssh #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents label15 As System.Windows.Forms.Label Friend WithEvents label14 As System.Windows.Forms.Label Friend WithEvents CheckRequireHostKeyVerification As System.Windows.Forms.CheckBox Friend WithEvents label13 As System.Windows.Forms.Label Friend WithEvents label12 As System.Windows.Forms.Label Friend WithEvents label11 As System.Windows.Forms.Label Friend WithEvents Label6 As System.Windows.Forms.Label Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents label10 As System.Windows.Forms.Label Friend WithEvents Label9 As System.Windows.Forms.Label Friend WithEvents Label8 As System.Windows.Forms.Label Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents ctlTimeout As System.Windows.Forms.TextBox Friend WithEvents ctlPort As System.Windows.Forms.TextBox Friend WithEvents ctlBrowse As System.Windows.Forms.Button Friend WithEvents ctlPassword As System.Windows.Forms.TextBox Friend WithEvents ctlPrivateKeyFile As System.Windows.Forms.TextBox Friend WithEvents ctlRun As System.Windows.Forms.Button Friend WithEvents ctlUser As System.Windows.Forms.TextBox Friend WithEvents ctlCommand As System.Windows.Forms.TextBox Friend WithEvents ctlHost As System.Windows.Forms.TextBox Friend WithEvents ctlView As System.Windows.Forms.Button Friend WithEvents ctlLogFile As System.Windows.Forms.TextBox Friend WithEvents ctlStdErr As System.Windows.Forms.TextBox Friend WithEvents ctlStdOut As System.Windows.Forms.TextBox Friend WithEvents ctlResult As System.Windows.Forms.TextBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() ... End Sub #End Region Private Sub SshForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load objSsh = New Ssh End Sub Private Sub ButtonBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlBrowse.Click Dim fdlg As System.Windows.Forms.OpenFileDialog fdlg = New OpenFileDialog fdlg.Title = "Select Attachment" fdlg.InitialDirectory = "C:\" fdlg.Filter = "PPK files (*.ppk)|*.ppk" fdlg.FilterIndex = 1 fdlg.RestoreDirectory = True If (fdlg.ShowDialog() <> DialogResult.OK) Then Exit Sub End If ctlPrivateKeyFile.Text = fdlg.FileName End Sub Private Sub ButtonRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlRun.Click objSsh.Command = ctlCommand.Text objSsh.Host = ctlHost.Text objSsh.Port = Int16.Parse(ctlPort.Text) objSsh.RequireHostVerification = CheckRequireHostKeyVerification.Checked objSsh.UserName = ctlUser.Text objSsh.Password = ctlPassword.Text objSsh.PrivateKeyFile = ctlPrivateKeyFile.Text objSsh.ScriptTimeOut = Int32.Parse(ctlTimeout.Text) objSsh.LogFile = ctlLogFile.Text ' Clear output form-fields, i.e. stdout and stderr ctlStdOut.Text = "" ctlStdErr.Text = "" Cursor.Current = Cursors.WaitCursor objSsh.Run() Cursor.Current = Cursors.Default ctlResult.Text = objSsh.LastError & ": " & objSsh.GetErrorDescription(objSsh.LastError) If (objSsh.LastError = 0) Then ctlStdOut.Text = objSsh.StdOut.ReplaceEx(vbLf, vbCrLf) ctlStdErr.Text = objSsh.StdErr.ReplaceEx(vbLf, vbCrLf) End If End Sub Private Sub buttonView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ctlView.Click If (System.IO.File.Exists(ctlLogFile.Text.ToString())) Then System.Diagnostics.Process.Start(ctlLogFile.Text) End If End Sub End Class
Visual C# .NET sample: Execute a script on a remote LINUX machine using SSH
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using AxNetwork; namespace Demo { /// <summary> /// Summary description for SshForm. /// </summary> public class SshForm : System.Windows.Forms.Form { internal System.Windows.Forms.GroupBox GroupBox2; private System.Windows.Forms.Label label10; internal System.Windows.Forms.Label Label9; internal System.Windows.Forms.Label Label8; internal System.Windows.Forms.Label Label7; internal System.Windows.Forms.GroupBox GroupBox1; internal System.Windows.Forms.Label Label6; internal System.Windows.Forms.Label Label3; internal System.Windows.Forms.Label Label2; internal System.Windows.Forms.Label Label1; internal System.Windows.Forms.Label label11; internal System.Windows.Forms.Label label12; internal System.Windows.Forms.Label label13; internal System.Windows.Forms.Label label14; internal System.Windows.Forms.Label label15; private System.Windows.Forms.Button ctlView; private System.Windows.Forms.TextBox ctlLogFile; internal System.Windows.Forms.TextBox ctlStdErr; internal System.Windows.Forms.TextBox ctlStdOut; internal System.Windows.Forms.TextBox ctlResult; internal System.Windows.Forms.TextBox ctlTimeout; private System.Windows.Forms.CheckBox ctlRequireHostKeyVerification; internal System.Windows.Forms.TextBox ctlPort; private System.Windows.Forms.Button ctlBrowse; internal System.Windows.Forms.TextBox ctlPassword; internal System.Windows.Forms.TextBox ctlPrivateKeyFile; internal System.Windows.Forms.Button ctlRun; internal System.Windows.Forms.TextBox ctlUser; internal System.Windows.Forms.TextBox ctlCommand; internal System.Windows.Forms.TextBox ctlHost; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public SshForm() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { ... } #endregion private Ssh objSsh; private void SshForm_Load(object sender, System.EventArgs e) { objSsh = new Ssh(); objSsh.Clear (); ctlTimeout.Text = objSsh.ScriptTimeOut.ToString(); ctlLogFile.Text = System.IO.Path.GetTempPath() + "SshLog.txt"; } private void ctlRun_Click(object sender, System.EventArgs e) { objSsh.Command = ctlCommand.Text; objSsh.Host = ctlHost.Text; objSsh.Port = Int16.Parse(ctlPort.Text); objSsh.RequireHostVerification = ctlRequireHostKeyVerification.Checked ?-1:0; objSsh.UserName = ctlUser.Text; objSsh.Password = ctlPassword.Text; objSsh.PrivateKeyFile = ctlPrivateKeyFile.Text; objSsh.ScriptTimeOut = Int32.Parse(ctlTimeout.Text); objSsh.LogFile = ctlLogFile.Text; // Clear output form-fields, i.e. stdout and stderr ctlStdOut.Text = ""; ctlStdErr.Text = ""; Cursor.Current = Cursors.WaitCursor; objSsh.Run(); Cursor.Current = Cursors.Default; ctlResult.Text = objSsh.LastError if (objSsh.LastError == 0) { ctlStdOut.Text = objSsh.StdOut.ReplaceEx( "\n", "\r\n" ); ctlStdErr.Text = objSsh.StdErr.ReplaceEx( "\n", "\r\n" ); } } private void ctlBrowse_Click(object sender, System.EventArgs e) { System.Windows.Forms.OpenFileDialog fdlg; fdlg = new OpenFileDialog(); fdlg.Title = "Select Attachment"; fdlg.InitialDirectory = "C:\\"; fdlg.Filter = "PPK files (*.ppk)|*.ppk"; fdlg.FilterIndex = 1; fdlg.RestoreDirectory = true; if(fdlg.ShowDialog() != DialogResult.OK ) return; ctlPrivateKeyFile.Text = fdlg.FileName; } private void ctlView_Click(object sender, System.EventArgs e) { if (System.IO.File.Exists( ctlLogFile.Text.ToString())) { System.Diagnostics.Process.Start( ctlLogFile.Text); } } } }
You can download the full samples here.