之前一直使用 xshell + xftp 家庭版/教育版,但是 家庭版/教育版 有着窗口的限制数量,于是准备更换工具了。先后体验了 FinalShellMobaXtermterminusSimpleRemoter,最终发现了真香组合 PuTTY + WinSCP。除了 FinalShell 闭源以外,后面几款产品都是开源产品

几个工具的对比

看到推荐的比较多的有 FinalShellMobaXterm,重点来说说这两个为啥被我放弃了

FinalShell

一搜索 FinalShell,第一个就是官网了,刚进入官网我还以为走错地方了,我还特意出去确认了一下,发现者真的是官网,心里面顿时…,不过不管怎么样,既然有那么多博客推荐,那么就下下来体验一下

FinalShell 是国人基于Java开发,支持 window、mac、linux 三个平台,支持实时监控系统状态,可视化上传下载文件及文件夹,可以说对于新手极其友好。不过 FinalShell 依赖jdk 环境,作为一个 SSH客户端 需要依赖配置其他第三方环境这点差评,虽然这一点对于一个 Java开发 的码农来说是无所谓了,总体使用感觉一般,体验之后选择放弃

优点:

  1. 对于新手极其友好
  2. 可视化上传下载文件

个人不推荐的观点:

  1. 闭源且安全性未知
  2. 不支持禁用软件自动更新,一旦新版本发布就会弹出自动更新
  3. 依赖jdk环境,且过于重量,不够轻量

MobaXterm

MobaXterm 是仅支持window端的一款软件,功能非常强大,它提供所有重要的远程网络工具(SSH,X11,RDP,VNC,FTP,MOSH ……)和 Unix命令(bash,ls,cat,sed,grep,awk,rsync等)。使用MobaXterm工具,可以极大降低你windows系统上的软件安装数量。

这个软件体验之后本来是想作为主力 SSH 使用的,我也使用了一个多月,功能非常的强大,sftp 可以更随着命令目录显示,同样可以可视化界面来上传下载文件。但是使用了一个多月之后我放弃了,而放弃的原因不是因为过于重量,出现了一个无法忍受的问题,就是当中文输入法输入中文是光标无法对焦,且无法删除打错的拼音字母,只能强制输入到 Terminal 之后再删除,这实在无法忍受。

本来这个问题我以为是我个人的问题,后来我问了我同学,他用这个工具也有这个问题,他说就差没用到卸载了。好吧!去找找解决方案,结果发现压根每人提过这个问题,于是…,我放弃了

terminus、SimpleRemoter

这两个软件都在 GitHub 可以直接找到

  • terminus 这个软件挺漂亮,但是对于一个只想用 SSH 的用户来说太过于重量了,且不支持 sftp,遂放弃
  • SimpleRemoter 这个软件足够简洁、纯粹、轻量,但是由于开发时间较短,还有比较多的 bug,比如:对于不同分辨率的屏幕显示不够友好、MySQL下命令操作显示超出窗口大小导致无法继续输入命令等。希望未来能发展更好。

PuTTY + WinSCP

最终选定了这个组合,原因是 PuTTY 足够轻量、简洁且开源;而 WinSCP 同样开源,且可视化上传下载文件。这两个组合起来可以有种使用 xshell + xftp 的感觉,用了一段时间也没发现有啥问题。嗯!就两个字:真香!

这两个软件基本上打开就知道怎么用了,下面记录一些配置信息

PuTTY

PuTTy 可以说除了不支持选项卡模式以外,几乎非常完美了,够简洁、够轻量、够稳定

配置窗口大小、字体

首先配置都得先加载对应服务器,例如选中后 Saved Sessions 的名称如果没有显示,那么需要点击 Load 再开始配置,配置完之后 Save 才能生效。如下图:

配置基础
配置基础
  • Window
    • Columns 和 Rows 调整启动的行列数(设置之后 Terminal 窗口大小改变,不用每次都去拖拉)
    • Lines of scrollback 回滚行数。建议设置的大一点
      窗口设置
      窗口设置
  • Window -> Appearance
    • Font setting -> Change 调整字体
      字体设置
      字体设置
  • Connection -> keepalives: 60
    • 长时间不操作断开连接,设置 keepalive 保持连接,比如设置为60秒发送一个空数据包保持连接
      keepalive
      keepalive
  • Connection -> Data
    • Auto-login username 可填写登录用户名。省去每次需要填写Username的麻烦
      默认用户名
      默认用户名

这些配置完之后就可以,Session -> Save,配置就生效了。

配色问题

PuTTY 的原生配色真是亮瞎狗眼,原生配色图片我就不放了,文件夹颜色看的巨难受,好在支持了自定义配色。

首先新建一个 .reg 文件,文件名随意,将下面的内容复制进去,修改 VM11 为你的Session Name,保存修改,然后双击运行就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\VM11]

; Default Foreground
"Colour0"="217,216,216"
; Default Bold Foreground
"Colour1"="217,216,216"
; Default Background
"Colour2"="28,28,28"
; Default Background
"Colour3"="28,63,149"
; Cursor Text
"Colour4"="28,28,28"
; Cursor Color
"Colour5"="231,231,232"
; ANSI Black
"Colour6"="115,113,113"
; ANSI Black Bold
"Colour7"="115,113,113"
; ANSI Red
"Colour8"="251,38,8"
; ANSI Red Bold
"Colour9"="251,38,8"
; ANSI Green
"Colour10"="167,226,46"
; ANSI Green Bold
"Colour11"="167,226,46"
; ANSI Yellow
"Colour12"="102,217,238"
; ANSI Yellow Bold
"Colour13"="102,217,238"
; ANSI Blue
"Colour14"="0,157,220"
; ANSI Blue Bold
"Colour15"="0,157,220"
; ANSI Magenta
"Colour16"="255,85,255"
; ANSI Magenta Bold
"Colour17"="255,85,255"
; ANSI Cyan
"Colour18"="255,210,4"
; ANSI Cyan Bold
"Colour19"="255,210,4"
; ANSI White
"Colour20"="217,216,216"
; ANSI White Bold
"Colour21"="255,255,255"

再次打开 VM11 看看效果,效果如下

配色效果图
配色效果图

使用密钥登录

PuTTY 出于安全性考虑不支持保存密码登录,那为了不输入冗长的密码,当然使用密钥登录喽,首先使用 PuTTYgen 再 window 上生成公钥和私钥,PuTTYgen 在 PuTTY 的安装目录下

  1. 点击 Genterate 生成密钥,选择算法默认 RSA 就可以了,至于各个算法有啥区别就不罗嗦了,生成的时候再进度条下方空白处随便晃几下,产生随机性的同时加快生成速度
密钥开始生成
密钥开始生成
密钥生成中
密钥生成中
  1. 密钥生成后保存复制公钥及保存私钥
密钥生成完成
密钥生成完成

公钥保存在服务器,连接远程主机,vim ~/.ssh/authorized_keys,将公钥复制进该文件,保存退出

为了文件的安全性,设置验证文件只读,chmod 400 ~/.ssh/authorized_keys

  1. 利用保存的私钥登录

首先你得通过 Connection -> Data 设置默认登录用户名

默认用户名
默认用户名

然后点击 SSH -> Auth -> Browse,选择保存的私钥位置

选择私钥
选择私钥

最关键的一步,一定不要忘了保存,特别是如果没有显示 HostName 和 Saved Sessions 一定要点击 load,再点击保存,不然设置不生效

保存设置
保存设置

保存好之后就可以看看是否可以正常使用密钥登录了

WinSCP

至于 WinSCP 默认支持中文的,配置也很简单,基本看到了中文就会用了,放一个图例

WinSCP
WinSCP

拖拽即可上传,这是单栏模式,也可以设置成类似 xftp 的双栏模式

单栏WinSCP
单栏WinSCP