Skip to content

技术架构

技术选型

模块选型说明
UISlint纯 Rust 编译,无 GC,极低运行时开销
异步运行时tokio异步网络与任务调度
SSH 协议russh纯 Rust 实现,无 libssh 依赖
系统指标sysinfoCPU / 内存 / 网络等采样
序列化serde + serde_json会话配置持久化
日志tracing + tracing-subscriber结构化日志输出

核心设计

UI 与后端桥接

应用事件循环是单线程(Slint 要求),所有跨线程 UI 更新通过 slint::invoke_from_event_loop 回调完成,UI 与后端逻辑在 app.rs 中桥接。

安全存储

会话密码使用 ChaCha20-Poly1305 加密后落盘,即使配置文件泄露,攻击者也难以还原明文密码。

主机密钥校验

SSH / SFTP 共享 known_hosts 校验逻辑:

  1. 首次连接时确认并记住主机密钥
  2. 后续连接若密钥变化会再次提示,防止中间人攻击

构建与发版

不要直接手动修改 Cargo.toml 后再打标签,应使用发布脚本,让 Git tag 指向的提交本身就已经包含正确版本号:

powershell
.\scripts\release.ps1 v0.6.0 -Push

脚本会更新 Cargo.toml / Cargo.lock,运行 cargo check --locked,验证 meatshell --version,提交 Release v0.6.0,创建 annotated tag,并推送当前分支和 tag。更多细节见仓库内 docs/release.md

开源许可

MeatShell 采用 MIT OR Apache-2.0 双许可协议发布。