【开源】7 天,我用 Rust 复刻了 FinalShell!Rhost v1.0.0 发布

前言

FinalShell 好用,但它是闭源的;Xshell 强,但它收费且只支持 Windows;Tabby 现代,但它是 Electron 的------开几十个标签页内存直接起飞。

作为一个天天跟服务器打交道的人,我一直在找一款开源、跨平台、轻量、内存友好的 SSH 终端工具。找了一圈没找到完全满意的,干脆自己写一个。

Rhost 是什么

!在这里插入图片描述(i-blog.csdnimg.cn/direct/abee... =x280)

Rhost 是一款基于 Tauri 2 + Rust + Vue 3 的开源远程主机管理器,对标 FinalShell,提供 SSH 终端、SFTP 文件管理、端口转发、服务器监控等能力,支持 macOS / Windows / Linux。

一句话:用更低的内存占用和更流畅的多连接体验,管理你的远程服务器。

为什么不用 Electron

Electron 类终端工具在大量终端输出时存在几个痛点:

  • JSON 序列化开销大:高频字节流吞吐受限,终端刷日志时明显卡顿
  • ANSI 转义序列可能损坏:颜色、光标控制在 JSON 编解码中容易出问题
  • 多连接并发时内存飙升:每个连接都是一个渲染进程,开多了 UI 卡死

Rhost 采用原生二进制 IPC 流架构,从根本上解决这些问题:

rust 复制代码
终端字节流 → 自定义二进制帧(type:u8 + len:u32 + payload)→ IPC Channel → xterm.js
  • 高频数据流走二进制 Channel,不经 JSON
  • 低频控制消息走 invoke/JSON
  • 每会话独立 Channel,数据流完全隔离

实测开 10+ 终端标签页,内存占用比 Electron 类工具低一个数量级,刷日志丝滑不卡。

核心特性

特性 说明
多标签 SSH 终端 xterm.js 渲染、UTF-8 全链路透传、右键菜单、多会话广播
断线自动重连 网络意外中断触发指数退避重连(1s 起翻倍、封顶 30s),手动断开不重连
SFTP 文件管理 双栏浏览、流式传输队列、断点续传、暂停/取消
端口转发 本地/远程/SOCKS5 动态转发,状态实时推送与流量统计
服务器监控 CPU/内存/磁盘/网络/进程周期指标,零 sudo、零远端落盘
主机密钥校验 TOFU 首次信任 + known_hosts 持久化,密钥变更弹红色警告
安全凭证 密码/私钥口令存入系统密钥环,绝不写入配置文件
配置导入导出 整体配置与主机列表批量导入导出,导入后一键重启生效

技术栈

scss 复制代码
后端:Rust (edition 2024) + Tokio 全异步 + russh + russh-sftp + keyring
前端:Vue 3.5 + TypeScript + Vite + Xterm.js
桌面:Tauri 2

后端所有 SSH IO 纯 async,每个会话绑定独立 IPC Channel,Rust 层统一管理会话生命周期。ssh/ 模块除 manager 外不依赖 Tauri,可独立单测。

截图

工作台全景:多标签终端 + MOTD 欢迎面板 + SFTP 文件管理 + 实时服务器监控

SFTP 双栏文件管理:流式传输队列、断点续传

可视化端口转发:本地/远程/SOCKS5 规则,实时流量统计

快速连接:输入 SSH 命令一键建立连接,内置示例与历史

文档与下载

相关推荐
不可能片场10 小时前
命令行中文变问号 我用环境变量救了场
前端·electron
轻舟技术A10 小时前
Pi 的 Rust 实现来了:rpi,不止一个终端 Agent
开发语言·后端·rust
wflynn13 小时前
GitHub 今日推荐|wordcraft:用 Rust 重写 Word 内核并开放给 AI 调用
rust·开源·github
I'm Jie13 小时前
【开源】7 天,我用 Rust 复刻了 FinalShell!Rhost v1.0.0 发布
开发语言·rust·开源
不可能片场14 小时前
AI视频口型对齐 用音频驱动说话镜头
前端·electron
小灰灰搞电子15 小时前
Rust+Slint 实现一个终端软件源码分享(半成品)
开发语言·rust
恋喵大鲤鱼15 小时前
Rust str 与 String 类型的区别
rust
miofly16 小时前
GitHub 今日推荐|fsearch:Rust 打造 macOS 毫秒级全盘文件名与内容搜索工具
rust·开源·github
东鹏特饮17 小时前
15个实用Linux运维脚本
linux·运维·shell·脚本·redhat·常用生产脚本
大鹏的NLP博客17 小时前
Rust 的本质:用数学约束实现编译期内存安全
安全·rust