Windows下通过SSH使用SharpSSH远程登录主机执行命令传输文件

1. 什么是SSH

SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。SSH是每一台Linux电脑的标准配置,但是在windows系统中默认是没有安装SSH的,需要安装SSH相关服务端软件,比如FreeSSHD。

2. SSH可以用来做什么

SSH可以用于远程登录主机,登录方式通常有两种:口令登录和公钥登录

一:口令登录:通过在服务端设定的用户名和密码进行登录,每次都登录都需要填写密码

二:公钥登录:通过一对公钥和私钥登录,公钥存放在服务端私钥存放在客户端,在登录时服务端向客户端发生一个随机字符串,然后客户端通过私钥先进行加密然后发生到服务端,在服务端接受和用公钥进行解密,然后匹配是否正确解密来验证登录,注意:存在在服务端的公钥名称和用户名一致,已区分不同用户不同的公钥;这样每次就可以直接用公钥登录省去了密码的繁琐。

SSH可以用户服务端和客户端之间双向文件传输

3. SharpSSH与SSH服务端FreeSSHD

SharpSSH是一个用C#实现的SSH客户端组件,用户可以根据需要修改使用改组件已满足自己的需求,SharpSSH介绍和组件下载网站:http://sharpssh2.codeplex.com/,也可以在这里下载。

注意:在官网下载SharpSSH会因为主机为安装Mono而出现Mono.Security.dll的引用错误,只需要下载Mono.Security.dll重新引用即可。

我在Windows7 VS2012的环境下测试官网下载的SharpSSH项目升级成功,解决方案如下:


其中有两个项目:Examples,SharpSSH顾名思义,Examples是使用示例,SharpSSH就是真正的实现项目,设置Examples为启动项,运行效果如下:


可以看到,示例为我们提供了16个功能项,再次我们需要测试远程登录和文件传输,使用第13, 和16项测试即可,同时也会用到第5项生成公钥私钥对;


客户端SharpSSH已经实现了,接下来在Windows系统中就需要安装客户端了,这里选择FreeSSHD作为客户端,官网下载地址:http://www.freesshd.com/?ctt=download或这里:http://download.csdn.net/detail/dangercheng/6804861

下载下来直接下一步下一步安装,安装完成后运行会提示你是否生成Key选择是即可,同时会安装FreeSSHDService服务,选择关闭该服务;

此时可以看到支持telnet和SSH服务,且都关闭,到此步客户端服务端都已经准备就绪,下面就进行我们的登录测试和文件传输测试吧;

4. 远程登录执行命令

上面提过,登录有两种方式,口令登录和公钥登录,先介绍口令登录吧;

口令登录:即在服务端freeSSHd上创建一个用户名和密码,使用此密码口令登录

首先在freeSSHd上的Users选项中点击Add弹出添加用户界面,然后Login填写用户名,authorization选择Password stored as SHA1 hash 然后填写密码和重复密码,勾选该用户可用服务,如下图,创建了用户名和密码都是test:


然后我们选择SSH项,将Use new console engine项的勾选去掉已防止中午乱码,如图:


选择确定即可创建成功,然后回到主界面我们打开SSH服务


如上图所示即表示SSH服务已经成功开启;但是有可能会错误:常见原因是地址已使用,这是端口号22已经被使用造成的,关闭该端口的进程即可。

接下来我们运行我们的sharpSSH进行登录测试吧。

我们选择第13项,然后输入远程地址I(由于服务端就在本机所以是127.0.0.1),然后不选择公钥登录,然后输入密码,连接成功,执行date命令查询当前时间:


现在我们测试公钥登录:

公钥登录需要先生成公钥私钥对,我们选择第5项KeyGen来生成,命名为test(和用户名一致),Sig Type选择dsa, 然后Comment为空弹出窗口输入passphrase我们不输入直接选择ok,这样就在sharpSSH的bin\Debug目录下生成了我们的test的公钥私钥两个文件。如图:


生成了公钥test.pub和私钥test两个文件。然后将公钥文件test.pub放到freeSSHd指定的公钥文件夹目录:


也就是C:\Program Files\freeSSHd\这个目录下,并去掉后缀.pub,然后修改test用户的authorization选择Public Key如图:


接下来再测试:


5. 传输文件

首先我们修改服务端文件位置:


这样我们服务端的默认位置就是我们在freeSSHd下面自己添加的sftpFile的目录了,我们在里面放一个图片test.jpg,现在我们要将这个图片传到我们sharpSSH的目录页就是bin\Debug目录下并改名为testClient.jpg:


可以看见传输的速度还是很快的93k0秒完成,有兴趣的可以试试大文件的传输,到此关于SSH的登录和文件传输的测试完毕,当然SSH还有其他的很多很多的强大功能,这里不能一一列举测试,有兴趣自己取试试。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值