使用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

时间: 2024-08-05 23:50:18

使用SharpSSH库实现的最简单的SSH控制台的相关文章

客户端网络库实现真的很简单吗?

(注:本文所讲的网络协议只针对TCP协议) 背景:开发一个C/S的应用势必需要服务端和客户端的适配,包括网络协议.数据传输格式.业务处理的适配.由于服务端承载着大量的客户端,需要高并发.高性能.高可靠性,在我们的认知里往往认为服务端的网络模型和架构设计很复杂.但是客户端嘛,无非就是建立网络连接,发个请求收个回复如此简单.所以在工作中经常会出现有些客户端处理界面和业务的同事对平台开发者说,你做好服务端的网络就好,客户端的网络我来处理,而且在他们的想法里,这个所谓的客户端网络库只需要很短的时间就可以

Win8.1下FreeImage.lib库的配置和简单使用(转)

转自http://www.codeweblog.com/win8-1下freeimage-lib库的配置和简单使用/ 首先,你可以从这里获取FreeImage的完整库文件(访问密码 9a5e). 配置过OpenGL的同学,可以直接跳过这个部分,VS中配置FreeImage库和配置OpenGL库的流程完全相似.强调一点的是,虽然本人使用的是win8.1下的VS2013,但是个人觉得win7上下的操作系统或者VS2010以上的VS都可以按照这个步骤级逆行配置.可能有区别的是可能共享的Demo不能够直

duilib DirectUI库里面的一个简单的例子RichListDemo

http://blog.csdn.net/zengraoli/article/details/9993153 2013-08-16 00:08 3289人阅读 评论(2) 收藏 举报 目录(?)[+] 1.首先来看这里的CRichListWnd 已经不再是从CWindowWnd继承了 classCRichListWnd:publicWindowImplBase 从WindowImplBase中,可以看到有三个抽象函数: virtualCDuiStringGetSkinFolder()=0; vi

运用socket实现简单的ssh功能

在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是:服务器端需要对客户端发送过来的命令进行相应,并将响应内容返回给客户端. 看似很简单的需求,但是如何响应命令行?python官方建议buffer的大小不宜超过8k(8192byte),如果返回的数据大于了buffer如何让客户端接收完全?信号传输过程只能通过byte类型,而命令执行过程又需要使用到st

FreeBSD简单配置SSH并用root远程登陆方法

FreeBSD简单配置SSH并用root远程登陆方法 前言:最近下载了FreeBSD,在虚拟机上安装,第一步先要开启SSH服务,用终端putty软件可以实现在windows系统进行远程管理, 初级 ==================== 1.开启sshd服务: vi /etc/inetd.conf ssh stream top    nowait root     /usr/sbin/sshd ssh stream tcp6   nowait root    /usr/sbiin/sshd 去

Caffe源码中各种依赖库的作用及简单使用

1.      Boost库:它是一个可移植.跨平台,提供源代码的C++库,作为标准库的后备. 在Caffe中用到的Boost头文件包括: (1).shared_ptr.hpp:智能指针,使用它可以不需要考虑内存释放的问题: (2).date_time/posix_time/posix_time.hpp:时间操作函数: (3).python.hpp:C++/Python互操作: (4).make_shared.hpp:make_shared工厂函数代替new操作符: (5).python/raw

嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍

*************************************************************************************************************************** 作者:EasyWave                                                                             时间:2014.10.31 类别:Linux应用-MP4视频录制库MP4V2

iOS实用技能扩展-静态库的制作与简单使用

前言:此文是关于静态库的概念描述,如何制作及简单调试使用,不同版本的说明与场景使用. 1.关于库的简介: 库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 2.静态库的特点:.a+.h; 为什么制作闭源库 国内的企业,掌握有核心技术,同时是又希望更多的程序员来使用其技术,因此采用"闭源"的方式开发使用 例如:百度地图,友盟,JPush等 在

GitHub开源库排名一百的简单介绍,值得收藏!

GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库. iOS 版本的在此: https://github.com/Aufree/tri