再见Xshell,我用5个开源工具重建了终端工作流

0 阅读6分钟

2017年8月,Xshell的一个版本被植入后门的消息在网上传开。之后每次使用 xshell 都会有心里阴影。作为一个 IT 行业从业人员,又免不了用到终端管理工具。 所以为了安全考虑,我一直关注类似替代工具与工作流程,现在我分享下我最新的实现方法。现在我这套工作流程基本实现了 xshell 的替代。

第一步:我要找什么样的替代?

Xshell不是不好用。SSH登录、文件传输、多会话管理,它该有的都有。

但我不想再为"信任"这件事买单了。

我想找的替代方案,得满足几个条件:

  • 开源代码能看得到,至少出了问题我知道。
  • 免费Xshell收费不算贵,但既然有免费的,为什么要付钱?
  • 功能够用SSH登录、文件上传下载、多会话,这三个是核心。

一开始我想找个"一揽子"解决方案,一个软件顶替Xshell所有功能。找了一圈发现,开源世界里,完美的"全能工具"不存在。

但有一些不那么完美、组合起来却好用的工具链。

最后我留下了5个:

  • tssh —— SSH客户端,内置文件传输支持

  • trzsz —— 文件传输工具,速度秒杀传统的rz/sz

  • ssh-copy-id —— 免密登录配置,Windows上的实现(winget 安装)

  • Windows Terminal —— 微软出的终端,多标签管理(windows基本已经安装)

  • winget —— Windows包管理器,用来装上面这些(windows基本已经安装)

这个组合的思路是:不求单个工具完美,但求组合起来够用。

第二步:安装这些工具

装东西之前,你得先有个 Windows Terminal(windows11 基本已经自带了)。

如果没有的话自己装一行命令,搞定。

winget install Microsoft.WindowsTerminal 

Windows Terminal 装好后,你打开来,默认是 PowerShell。这个界面比老黑的 CMD 好看太多,而且支持多标签页,就像浏览器的标签一样。你可以同时开 SSH、PowerShell、WSL,来回切换,不用开一堆窗口了。

接下来是 tssh 和 trzsz。

这两个是同一个项目出的。tssh 是 SSH 客户端,trzsz 是文件传输工具。官方提供了详尽的安装方文档,参考官方文档安装就好。

tssh 的使用,基本可以认为无痛替代 open-ssh,ssh 的所有操作直接用 tssh 就可以(无需重新学习记忆)

最基本 tssh 使用

tssh user@server 

第一次连接时,tssh 会问你密码。你输入之后,它会问你:要不要保存密码?如果选是,下次就不用输了。

这个密码是加密存储的,不是明文。这点我挺放心,至少不是藏着掖着的明文。

文件传输怎么弄?

实现好的样子如下。

trzsz 分成 trz(上传)和 tsz(下载)。你在 tssh 连接的服务器上,输入 trz,会弹出一个文件选择窗口,选文件传上去。下载的话,在服务器上输入 tsz 文件名,就能下载到本地。

这个传输速度,比 rz/sz 快多了。尤其是传一堆小文件的时候,优势很明显。官方说用了隧道传输模式,速度能超过 scp。我测下来,确实能感觉到差别。

具体安装需要在服务器上提前部署好 trzsz, 同样官方提供了详尽的文档。几乎主流操作系统支持了;包括还提供了 go 版本,这样在需要时直接自己编译一个用。

# 主流系统安装# ubuntu/debian$ sudo apt install trzsz# redhat 系$ yum install trzsz$ dnf install trzsz

第三步:配置免密登录

小编这里需要经常登录服务器都会配置 SSH 的免密登录, 所以这里同样也实现了这个需求。

SSH 的免密登录,原理是把你本地的公钥放到服务器的 ~/.ssh/authorized_keys 里。这样你下次连服务器,就不用输密码了。

在 Linux/Mac 上,有个 ssh-copy-id 命令,一行就搞定:

ssh-copy-id user@server 

Windows 本身没有这个命令,

依靠第三方开源实现 github.com/axeprpr/ssh… 我也实现了 ssh 的免密码登录服务器。以下在 terminal 中使用 winget 安装就好

󰍲 admin  …\auto-claude-writing-agent-pub   main ?   13:10 
 winget search ssh-copy-id

名称        ID                版本  匹配                 源
---------------------------------------------------------------
SSH Copy ID axeprpr.SSHCopyID 1.1.0 Moniker: ssh-copy-id winget

󰍲 admin  …\auto-claude-writing-agent-pub   main ?   13:10 
 
 
 winget install ssh-copy-id 
 

使用方式与 linux 下命令一样样的。

第四步:多会话管理

Xshell 的多会话管理我一直很喜欢,可以同时开多个 SSH 会话,用标签页切换。

在 Terminal 上结合 tssh 也能做到,而且体验也不错;tssh 支持多个 window 窗口,多个 tab, 多个 pan 面板打开。基本满足使用需求了。

以下 tssh 命令显示服务器列表,用空格选中想要登录的服务器,按自己需求,比如用 p 在多个 pan面板打开会话。

用了一段时间,感受如何?

这套配置我已经使用一年了,基本完成了 xshell 功能的替代。都是开源实现使用与学习没有什么成本,安全需求也很放心。

最大的收获是什么?

替代 Xshell 本身不是什么大事。

但这件事让我开始重新审视我用的所有工具。

浏览器、编辑器、终端、甚至操作系统 —— 我到底在用多少个"黑盒子"?

开源不是万能药。

有些闭源软件确实做得很好。但至少,对于那些每天都要用、掌握着我的核心数据和权限的工具,我更愿意用代码透明的方案。

这不是技术问题,是控制权问题。

我的数据、我的服务器、我的工作流,应该由我控制,而不是某个我不知道的后门。

如果你也在用 Xshell 或类似的闭源终端工具,不妨试试这个组合。

用开源重建你的工作流,不止是换个软件,是换一种思维方式。

用到的工具

如果你有其他开源替代方案,欢迎分享。

往期文章

其他

欢迎关注本公众号其他社媒平台

link_logo

点击以下链接关注我的数字名片!

muselink.cc/hamisay

"如果您觉得这篇文章对您或您的朋友有所帮助,不妨动动手指,关注我们、点赞并分享到朋友圈,让更多人受益。您的每一次互动都是对我们最大的支持和鼓励!"