首页 > 代码库 > 使用SharpSSH库实现的最简单的SSH控制台

使用SharpSSH库实现的最简单的SSH控制台

今天研究了下怎么用C#程序通过SSH连接远程的Linux系统,找到了SharpSSH,下载下来体验了一下:

1.下载SharpSSH

SharpSSH的主页地址:http://www.tamirgal.com/blog/page/SharpSSH.aspx

这个页面中,在“Download”(下载)标题下,可以选择直接下载编译好的程序或是直接下载源码

技术分享

下载程序:SharpSSH-1.1.1.13.bin.zip,SourceForge上的 下载地址

下载源码:SharpSSH-1.1.1.13.src.zip,SourceForge上的 下载地址

2.使用直接下载的二进制程序

直接下载的二进制程序,包括3个DLL文件和1个EXE文件,双击EXE文件就可以运行了

技术分享

输入13,按下回车键,即可实现输入主机IP地址、用户名、登陆密码登陆一台Linux主机

我打开VMware虚拟机,启动一个RedHat,它的地址我配的是192.168.8.123,用户名为oracle,密码为1234

操作如下图:

技术分享

进入主机后,输入exit命令关闭SSH连接

3.自己编写C#程序调用库文件实现这一功能

SharpSSH的源码注释和示例都做得很详细,我参考了里面的内容,写了下面这段代码,通过调用SharpSSH库实现了SharpSSH程序中的功能13:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Tamir.SharpSsh;

namespace SSHTest
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string host = "192.168.8.123";
                string user = "oracle";
                string pass = "1234";

                Console.WriteLine("主机地址: {0}", host);
                Console.WriteLine("登陆用户: {0}", user);
                Console.WriteLine("登录密码: {0}", pass);

                SshShell shell = new SshShell(host, user);
                shell.Password = pass;

                shell.RedirectToConsole();
                Console.Write("正在连接...");
                shell.Connect();
                Console.WriteLine("连接完毕!");
                Console.WriteLine("=========");

                while (shell.ShellOpened)
                {
                    System.Threading.Thread.Sleep(500);
                }

                Console.WriteLine("=========");
                Console.WriteLine("断开连接中...");
                shell.Close();
                Console.WriteLine("断开完毕");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.Write("按任意键继续...");
            Console.ReadKey();
            Console.WriteLine("\b");
            Environment.Exit(0);
        }
    }
}

运行这段代码前,需要人工手动添加一个DLL文件引用:Tamir.SharpSSH(虽然有三个DLL,但本段代码只需要引用1个)

进入该主机后,我又执行了一个命令:“ls -ls”,然后再执行的exit命令,运行结果如下图:

技术分享

附:编译源码

下载下来的源码包SharpSSH-1.1.1.13.src.zip可以通过下面的方法编译

我的环境是:“Microsoft .Net Framwork 4.5.50938”,编码环境是“Visual Studio 2012 Ultimate”

下载下来的源码,解决方案(SLN文件)的图标是这样的:

技术分享

看来版本比较古老啊,所以再用VS2012打开的时候,会出现下面这个“复查项目和解决方案更改”提示框,单击“确定”按钮开始升级:

技术分享

这个时候还会提示“安全警告”,两个程序集“SharpSSH”和“Examples”各会提示一次,全部点击“确定”按钮即可

技术分享

升级完后会生成一个升级报告,“UpgradeLog.htm”

SharpSSH的代码可以直接编译运行,从解决方案的属性来看,这是个单启动项目,启动项目的程序集是“Examples”

技术分享

END

使用SharpSSH库实现的最简单的SSH控制台