首先通过nuget安装Renci.SshNet.Async
using Renci.SshNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SSHClientDemo
{
public class clsSSHClient
{
public string m_strHost { get; set; }
public int m_nPort { get; set; }
public string m_strUser { get; set; }
public string m_strPass { get; set; }
public SshClient m_sshClient { get; set; }
public clsSSHClient(string host,int port,string user,string pass)
{
this.m_strHost = host;
this.m_nPort = port;
this.m_strUser = user;
this.m_strPass = pass;
}
public void SetHost(string host)
{
m_strHost = host;
}
public void SetPort(int port)
{
m_nPort = port;
}
public bool StartClient()
{
try
{
if (m_sshClient==null)
{
m_sshClient = new SshClient(m_strHost, m_nPort, m_strUser, m_strPass);
}
if (!m_sshClient.IsConnected )
{
m_sshClient.Connect();
}
return true;
}
catch (Exception)
{
return false;
}
}
public bool StopClient()
{
try
{
if (m_sshClient != null)
{
if (m_sshClient.IsConnected)
{
m_sshClient.Disconnect();
m_sshClient.Dispose();
m_sshClient = null;
}
}
return true;
}
catch (Exception)
{
return false;
}
}
public bool SendCommand(string strCmd,out string result,out string err,int timeout)
{
result = "";
err = "";
try
{
SshCommand cmd = m_sshClient.CreateCommand(strCmd);
cmd.CommandTimeout = TimeSpan.FromSeconds(timeout);
cmd.Execute();
result = cmd.Result;
err = cmd.Error;
return err=="";
}
catch (Exception)
{
return false;
}
}
}
}