本篇前瞻

学习完go语言基础的专栏,我们究竟写出怎么样的实用工具呢?我在github上开源的ssh连接管理器就是一个比较好的样例。

项目背景

这个项目的背景是之前我在上班时连接生产机器时只能使用“ssh连接三剑客”——xshell,SecureCRT或者putty。而很久前我被告知xshell,SecureCRT不能再使用了,只能使用putty 。但是putty 又不能像xshell或SecureCRT一样去管理多个ssh终端机器,只能处理一个ssh终端机器,而且还不保存用户名密码。

于是为了保证使用方便和使用习惯的一致,才有了这个开源项目,我使用go语言做粘合剂去管理puttywinscp去连接多个机器分别用于ssh终端管理和文件传输。现在这个项目呢能够和xshell或SecureCRT类似去管理多个ssh终端机器,而且非常贴合我们程序员喜欢使用命令行去操作机器的习惯。

ssh连接管理器

ssh连接管理器是一个怎样的工具呢?事实上,如果你想要做个类比,我们可以把它理解成一个简单的XShell。XShell是一个强大的ssh客户端,能够同时连接多个支持ssh连接的机器的付费工具。

在实现方面,由于putty是一个开源且免费的ssh客户端工具,但是它没法保存多个连接的用户名密码,winscp和filezilla都是一个免费的sftp客户端工具。ssh连接管理器将这三个工具进行了串联,通过putty建立ssh连接进行远程控制,而通过winscp或filezilla建立sftp连接进行文件传输。ssh连接管理器是用智能命令行和我们进行交互的。

优点

  1. 使用putty 进行ssh登录任一支持ssh的机器
  2. 使用winscp 或者filezilla进行上传或下载文件
  3. 使用命令行智能交互界面,使得程序员无需记住相关命令
  4. 能够管理putty , winscp 或者filezilla的多个机器的连接信息
  5. 使用putty , winscp 或者filezilla进行免密登录
  6. 使用国密加密保存用户名和密码的文件,密匙为登录密码

使用方式

下载ssh-mgr的windows64位发布版本,注意其最小版本为windows 7 64位或者windows server 2008 64位

配置

{
"ssh": "C:\\Program Files\\PuTTY\\putty.exe",
"sftp": "C:\\Program Files (x86)\\WinSCP\\WinSCP.exe",
"source":"C:\\Linux\\ssh",
"isEncrypted":true,
"password":"C:\\Linux\\passwd"
}
  • ssh 用于配置putty程序的路径
  • sftp 用于配置 winscp 或者filezilla程序的路径
  • source 用于配置存储ssh连接信息的路径
  • isEncrypted 是否加密ssh连接信息的路径
  • password 用于存储密码信息,用于加密登录

使用方法

Usage of mgr:
-c string
config file (default "config.json")

快速开始

  • 在isEncrypted为ture时,开始需要输入密码,如果之前没有输入密码则会输入两次确认密码
  • 使用下面的命令就可以进行ssh连接或者sftp连接,group是将ssh连接分组起的名称,而name是sh连接的别名
ssh group name      #启动putty进行ssh连接
sftp group name #启动 winscp 或者filezilla进行sftp连接
add group name #新增一个ssh连接信息
showAddr address #显示ip:port相关的ssh连接信息
show group name #显示对应分组1的ssh连接信息
exit #退出程序
  • 在打印对应的命令时会有对应的提醒,如下所示:
> ss
ssh ssh group name
  • 另外,它提示出对应的提醒,可以使用tab键后上下选择
> ssh t
test test
test1 test1
  • 新增ssh连接信息,输入add group name后
#没有端口会默认为22,如果输入1.1.1.1:1234
please input ssh address:1.1.1.1
please input ssh user:root
please input ssh password:*******

注意点

本工具虽然加密相关文件,但是在使用时,windows的任务管理器仍然会泄露shh的用户名和密码,为此在使用时确保只有一人在使用电脑。

使用样例

点击下面的图片可以看到视频,就是如何使用命令行进行ssh终端管理和文件传输。

从上面的视频,你不难看到ssh连接管理器可以以相当智能的命令行形式与程序员交互,这些功能已经相当强大。

如果你在会goalng的基础上,还会vue以及js等前端技术,那么你也能给这个工具展示一个相对完美的界面,这里挖个坑,后面有空去填一下,go语言事实上能够和js完美结合成为一个windows应用。

本篇后记

讲完这个项目,我看了这个项目初次提交的日期,居然已经是1年半之前,有点感叹时间过得真快。学习go语言也不知不觉已经到了第七个年头,而go语言也以其快速简单的开发悄悄地融入我的工作之中,让我们一起学习这个强大,简单而且易学的工具——go语言。

番外1.ssh连接管理器的更多相关文章

  1. 在SSIS 的 64 位版本中不支持 Excel 连接管理器

    Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...

  2. SOFA 源码分析 — 连接管理器

    前言 RPC 框架需要维护客户端和服务端的连接,通常是一个客户端对应多个服务端,而客户端看到的是接口,并不是服务端的地址,服务端地址对于客户端来讲是透明的. 那么,如何实现这样一个 RPC 框架的网络 ...

  3. httpclient 连接管理器

    连接操作器 连接操作是客户端的底层套接字或可以通过外部实体,通常称为连接操作的被操作的状态的连接. OperatedClientConnection接口扩展了HttpClientConnection接 ...

  4. SSIS包的组建之连接管理器

    上一篇我们通过一个示例来介绍一下SSIS 包的开发.接下来的内容我们将学习一下包中各个选项卡的使用.如:连接管理器选项卡.控制流选项卡.数据流选项卡和事件处理选项卡等等.这一篇将介绍一下连接管理器作用 ...

  5. 在SSIS 的 64 位版本中不支持 Excel 连接管理器[转]

    Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...

  6. 云主机不能外网ssh连接,只能内网ssh连接的问题处理

    某台服务器外网无法ssh,内网可以ssh连接,ping值延时比较大 安装iftop查看流量 yum install -y iftop iftop界面含义如下 第一行:带宽显示 中间部分:外部连接列表, ...

  7. openfire研究之部署连接管理器(connection manager)

    http://blog.sina.com.cn/s/blog_7325f5150101bafh.html 一. Openfire Connection Manager 简介 Openfire Conn ...

  8. SSH WebShell: SSH在线WEB管理器安装教程 - VPS管理百科

    SSH WebShell: SSH在线WEB管理器安装教程 - VPS管理百科 SSH WebShell: SSH在线WEB管理器安装教程 本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协 ...

  9. WebSphere--连接管理器

    连接管理器使您可以控制并减少由 Web 应用程序使用的资源.相对于非 Web 应用程序,基于 Web 的应用程序对数据服务器的访问会导致更高的和不可预料的系统开销,这是由于 Web 用户更为频繁的连接 ...

  10. 转-HttpClient4.3 连接管理

    转 http://www.yeetrack.com/?p=782 2.1.持久连接 两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间.Http连接需要的三次握手开销很大 ...

随机推荐

  1. 去掉DosBox烦人的Status Windows

    首先我们上成品动态图 很干净,很清爽有没有! 步骤 1.找到并选中DosBox快捷方式,鼠标右键点击选择属性 2.修改目标后面的参数,默认是 -userconf ,再添加一个 -noconsole 就 ...

  2. Redis内存兜底策略——内存淘汰及回收机制

    Redis内存兜底策略--内存淘汰及回收机制 Redis内存淘汰及回收策略都是Redis内存优化兜底的策略,那它们是如何进行兜底的呢?先来说明一下什么是内存淘汰和内存回收策略: Redis内存淘汰:当 ...

  3. js代理(Proxy) 和 反射(Reflection)

    在实际开发中经常会遇到js抛出的错误,但是我们有没有想过自己去接管js异常验证,根据自己的需求抛出异常呢?原本也许不行,但是在es6出来后就可以做到了 一.代理(Proxy) 什么是'代理' 呢?代理 ...

  4. Windows常用的 CMD 命令合集

    常用的 CMD 命令合集: 基础命令 dir:列出当前目录中的文件和子目录. cd:更改当前目录.例如,cd Documents 将当前目录更改为 Documents 文件夹. md 或 mkdir: ...

  5. U3DFrameWorkDemo:二、资源管理

    代码参考 代码文件参考下述详解的类图,工程参考第零章工程说明 概述 在游戏项目中有很多资产如:预制体,图片,音频,Lua脚本,Shader等等.他们随打包放在用户的硬盘里.在游戏的运行过程中,需要对这 ...

  6. vst实例(2) 创建VST

    前面我们知道,创建一个虚拟树,应该首先告知VST节点数据的大小(即nodedatasize),其实在创建树结构时,这一点并不是必须的,而是如果你需要让VST的每一个节点能指向一定的数据,从而在执行树的 ...

  7. bugku_MagicImageViewer

    CTF 安卓逆向 MagicImageViewer--png结构+算法 很少做安卓逆向的题目,在此记录一下 先用模拟器看一下 嗯,没啥提示. jeb打开 关键部分 if(s.length() == 1 ...

  8. 一次性掌握innodb引擎如何解决幻读和不可重复读

    了解mysql的都知道,在mysql的RR(可重复)隔离级别下解决了幻读和不可重复.你知道RR下是怎么解决的吗,很多人会回答是通过MVCC和next-key解决的,具体是怎么解决的,今天来重点分析下. ...

  9. Yolov5代码解析(输入端、BackBone、Neck、输出端))

    [深度学习]总目录 输入端:数据增强.锚框计算等. backbone:进行特征提取.常用的骨干网络有VGG,ResNet,DenseNet,MobileNet,EfficientNet,CSPDark ...

  10. 程序包xx不存在解决方案:java: 程序包org.aspectj.lang.annotation

    java: 程序包org.aspectj.lang.annotation不存在 #我自己已经配置好pom.xml文件,但是一直报错这个 aspectj 不存在 下面是我的pom.xml配置 可以看出来 ...