过去遇到不顺手的软件,我们要么将就,要么苦等别人更新。哪怕自己是程序员,也很少动念头给自己写一个 —— 毕竟打通设计、交互和编码全链路实在太耗时耗力了(编程大佬除外)。如今,AI 颠覆了这一切,代码生成速度快得惊人:过去程序员要写上几天甚至一个月的代码量,现在一天甚至几小时就能搞定。于是,那些曾经“能忍则忍”的将就,都变成了必须满足的需求,因为技术让定制变得“理所应当”且“触手可及”。软件定制化的时代开启了。
拿我购买的 SSH 客户端 FinalShell 来说,它确实方便:SSH 与 SFTP 同屏,拖拽文件就能上传,还自带监控功能。但痛点也很明显:首先,启动速度慢;其次,内存占用有时非常夸张,动辄好几个 G;再者,上传文件夹时会弹窗递归创建目录,直接卡住影响其他操作。最让我头疼的是,它无法查看已保存的原始密码。很多时候图省事只存在客户端里,没再往密码管理器里存,等要新建连接时,密码就彻底找不到了。
于是我创建了自己的 SSH 客户端软件(vShell)。vShell 是一款基于 Go 语言和 Vue 3 框架开发的桌面端 SSH客户端管理工具。主要功能模块如下:
- SSH连接管理与终端会话:
- 支持密码认证、私钥认证和键盘交互等多种认证方式,用户可通过分组管理、拖拽排序等方式组织连接列表。
- 终端基于 xterm.js 实现完整终端模拟,支持多标签页同时操作,窗口大小动态调整。
- 终端数据通过事件驱动机制实现高性能实时传输,输出缓冲优化确保流畅的交互体验。
- SFTP文件传输与管理:
- 提供可视化的远程文件浏览器,支持目录浏览、文件上传与下载、拖拽传输等功能。
- 内置并发传输池(3个并发任务),支持实时传输进度跟踪。
- 本地与远程文件树双面板布局,方便用户跨系统管理文件。
- 集成Monaco Editor代码编辑器,支持直接在应用内打开远程服务器上的文件进行编辑。
- 支持语法高亮、查找替换等编辑功能,编辑完成后一键保存到远程服务器,无需额外下载上传操作。
- 本地端口转发:
- 支持通过SSH隧道建立本地端口转发,将本地端口映射到远程服务器目标地址,实现安全的网络访问。
- 转发规则可动态创建和关闭,断开SSH连接时自动清理。
- 服务器资源监控:
- 复用已有SSH连接,通过读取/proc/stat、/proc/meminfo等系统文件,实时采集CPU使用率、内存使用量、磁盘使用率和网络流量等关键指标。
- SSH密钥管理:
- 提供独立的密钥管理面板,支持导入已有私钥(如id_rsa、id_ecdsa等)和生成新密钥对(支持ECDSA、Ed25519、RSA算法),私钥数据经AES-256-GCM加密后存储在本地数据库中,创建连接时可直接选用已保存的密钥。
- SSH配置:
- 支持解析标准 ~/.ssh/config 文件。
- 支持将已有 SSH 配置条目批量导入为 vShell 连接;
- 国际化支持:
- 内置中文和英文双语言界面,基于 vue-i18n 框架实现,满足不同语言用户的使用需求。
系统截图
创建连接
打开终端
SFTP
上传
下载
文件编辑
系统监控
进程监控
网络监控