今天研究了下怎么用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
来源:oschina
链接:https://my.oschina.net/u/1425762/blog/372337