在2017-18年间写过一个工具:Ssh2Explorer,彼时是为了解决ssh2类工具爆有后门的问题,前面文中有过介绍:“SSH2Explorer,一个linux/windows的远程登陆、文件传输工具,当时想用于替代xshell、putty等工具,因为那段时间爆出了很多的后门,我尝试着动手写了一个替代工具”,详见《打造安全可靠的远程登录工具SSH2Explorer》《升级遇坑,打卡体验》。因为对ssh2不甚了解,一直就存下了解的念头,2017年时这个契机来到,就用习惯的解决方式“编程”来深入了解它。
为了照顾大家的使用,我将前文中的部分段落摘抄过来。
使用指南:
采用windows(保留了ssh命令行方式)左右栏式,左边为树形的浏览器展示方式,右边为linux的平面化展示方式,直观象。
2、开发平台及协议介绍
2.1 开发平台为windows10,对象为Linux、Windows服务器。
2.2 SSH2 协议的构成
传输层协议: 通常运行在 TCP/IP 的上层,是许多安全网络服务的基础,提供了数据加密、压缩、服务器认证以及保证数据的完整性。比如,公共密钥算法、对称加密算法、消息验证算法等。
用户认证协议:运行在 SSH 协议的传输层之上,用来检测客户端的验证方式是否合法。
连接协议:运行在用户认证层之上,提供了交互登录会话、远程命令的执行、转发 TCP/IP 连接等功能,给数据通讯提供一个安全的,可靠的加密传输信道。
2.3 SSH2 协议的认证
常见的 SSH 协议认证方式有如下几种:
①口令验证方式(password authentication method),通过输入用户名和密码的方式进行远程机器的登录验证;
②公共密钥安全验证方式(public key authentication method),通过生成一组密钥(public key/private key)来实现用户的登录验证;
③键盘交互验证方式(keyboard interactive authentication method),通过服务器向客户端发送提示信息,然后由客户端根据相应的信息通过手工输入的方式发还给服务器端。
2.4 SSH2 协议算法
程序使用了github上开源的ssh2库文件;
3、使用说明
3.1、从界面上看分为三部分:上部分为登录区,下部分为操作区(下左部为windows窗口,下右部为Linux窗口)。
3.1.1在登录区为登录条件:服务器IP、端口号、用户名、密码、公私钥文件、认证方式类型。
默认情况下我们只需要IP、Port、Username、Password四个参数,Authentication Type默认采用全选方式。
认证方式(Authentication Type)类型:主要分为四种“口令密码、键盘交互、公钥、公钥代理”。
3.1.2 windows窗口区:上面一排是功能按钮,分别是“创建、删除、系统、显示图标(大、小、细节)、选择开关、上传”。
3.1.3 Linux窗口区:上面一排是功能按钮,分别是“创建文件/夹、删除、设置权限、文件改名、创建Link、解除Link、Shell、下载”。
3.2、登录后,
登陆成功后,右侧出现Linux机器的文件,同时显示“【linux已连接】 路径:/root”。
3.3、中间的功能区:
3.4、下半区展示区:
先要打开左侧的选择开关,如图:
点击“传输文件”按钮后,出现提示,如图:
询问是否上传到“/root”,如果不是可以自行修改位置。
3.5、从Linux传输文件到Windows,如图:
先进行文件选中,再点击传输按钮,如图:
选择要传输到的位置,确定后开始。
由于涉及到linux下目录、文件的递归,调试起来十分繁琐、难受,花费了大量精力,图示一段此处的源代码展示:
3.6、linux的命令行模式,如图:
其他常用功能,我就不做过多地介绍;这里介绍下右边的shell窗口,就是图中右边的黑色窗口;这个是对SSH命令行方式的保留,毕竟有些人习惯于使用命令行。
输入密码,
可以进行命令行的操作了。
4、登陆Windows:
输入帐号、密码就会调用mstsc.exe来登陆。
下载地址:
链接:https://pan.baidu.com/s/1Hx5H5eLF2GhX8N1IYvAPkQ
提取码:gqhh
后记:虽然在使用体验、软件功能上不如xshell等成熟工具,但胜在是自己的东西,用得放心。程序在2018年后就没有进行过升级了,一方面是达到了既定目标,一方面也是没有继续开发的动力了。从编程角度上看,这个工具软件的开发难度还是挺大的,期间看了些ssh2的开源代码,借鉴了其中的一些思想和技巧,但当自己动手时还是感觉万般地难,尤其是调试时那真是头晕目眩又不能放弃,写循环时才觉得智商高和数学好是多么地重要。再次回忆很多细节都记不住了,唯有苦难历历在目。分享给大家,水平有限,请多多包涵。