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 或类似的闭源终端工具,不妨试试这个组合。
用开源重建你的工作流,不止是换个软件,是换一种思维方式。
用到的工具
-
tssh (trzsz-ssh): trzsz.github.io/cn/ssh.html
-
trzsz: trzsz.github.io/cn/
-
Windows Terminal: learn.microsoft.com/zh-cn/windo…
-
winget: Windows 自带包管理器
-
ssh-copy-id for Windows: github.com/axeprpr/ssh…
如果你有其他开源替代方案,欢迎分享。
往期文章
其他
欢迎关注本公众号其他社媒平台

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