118 lines
5.5 KiB
Markdown
118 lines
5.5 KiB
Markdown
# OpsXShell
|
||
|
||
简单、便捷、人性化的原生运维终端。主打短路径:连上就能用终端、传文件、开桌面和转发——好用实用,不做审计/审批/堡垒机,也不靠插件才能干基础活。
|
||
|
||
## 已支持
|
||
|
||
免费层:
|
||
|
||
- SSH 终端:密码、私钥、SSH Agent 自动尝试、主机指纹校验
|
||
- 会话管理:分组、标签、快速连接、多标签、终端分屏、命令片段;界面 7 语种(zh-CN / zh-TW / en / ja / ko / vi / ru)
|
||
- SFTP:双栏、拖拽、断点续传、完整后原子替换、重命名、权限;远程文本编辑(约 2MB 上限)
|
||
- OpenSSH 配置:导入 `~/.ssh/config` 常用字段(批量清单导入属专业版)
|
||
- 系统链接:`ssh://user@host:port` 唤起已有或新启动的 OpsXShell,并进入预填充快速连接确认
|
||
- 本地终端:系统 Shell
|
||
- 本地安全:AES-256-GCM 加密会话密码、密钥口令和模型 API Key,不保存终端命令或 AI 对话历史
|
||
|
||
专业版(应用内升级):
|
||
|
||
- 端口转发:本地、远程、动态 SOCKS5;规则与运行实例分离
|
||
- 连接代理:HTTP CONNECT、SOCKS5
|
||
- 批量命令与终端广播(不含 RDP / VNC)
|
||
- 远程桌面:原生 RDP(IronRDP)与 VNC(vnc-rs)
|
||
- 串口
|
||
- 批量导入导出主机清单
|
||
- SSH Agent CLI:OpenAI/Responses/Anthropic 兼容 Provider、new-api 与 Ollama;最多 8 步执行循环,**严格 / 宽松**两级安全模式,五级风险,critical 硬拒绝(Rust 二次校验)
|
||
|
||
## 产品边界
|
||
|
||
OpsXShell 聚焦「日常远程干活」:SSH、SFTP、代理、转发、远程桌面、串口和多终端工作区。审计、录像、审批等堡垒机能力不在产品范围内——宁可少而顺,也不做成重型一站式平台。
|
||
|
||
仍在打磨、不影响「先用起来」的方向:
|
||
|
||
- Agent Forwarding、OpenSSH 证书与 FIDO2
|
||
- 断网重连、休眠恢复和大量标签切换的持续压测
|
||
- SFTP 内容校验和、显式冲突选择和任务恢复
|
||
- RDP / VNC 生产级证书校验与更多通道能力
|
||
- Windows 实机验收、自动更新、代码签名、macOS 公证和崩溃诊断
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
| ---------- | ------------------------------------------------- |
|
||
| 桌面运行时 | Tauri 2 |
|
||
| 原生后端 | Rust 2021 |
|
||
| SSH / SFTP | `ssh2 0.9` / libssh2 |
|
||
| 远程桌面 | IronRDP / `vnc-rs` |
|
||
| 本地终端 | `portable-pty 0.9` |
|
||
| 串口 | `serialport 4.8` |
|
||
| 前端 | React 18 + TypeScript 5 + Vite 5 |
|
||
| 状态管理 | Zustand 4.4+ |
|
||
| 终端 | XTerm.js 5.5+ |
|
||
| 国际化 | i18next(zh-CN / zh-TW / en / ja / ko / vi / ru) |
|
||
| 测试 | Vitest + Rust test |
|
||
|
||
会话和设置保存在系统应用数据目录的 `opsxshell-data.json`。主密钥固定保存在 `~/.opsxshell/master.key`,Unix 权限为目录 `0700`、文件 `0600`。旧版 typo 路径 `~/.opsxshsell/` 会在启动时自动迁移并保留 `.opsxshsell.bak` 备份。
|
||
|
||
## 开发
|
||
|
||
环境要求:Node.js 18+、npm 9+、Rust 1.77+。
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
常用检查与构建:
|
||
|
||
```bash
|
||
npm run acceptance:quick
|
||
npm run acceptance:full
|
||
./scripts/build.sh v2.1.1 mac-arm64
|
||
scripts\build.bat v2.1.1 win-x64
|
||
./scripts/release.py v2.1.1 --dry-run
|
||
```
|
||
|
||
`scripts/build.sh`(macOS/Git Bash)和 `scripts/build.bat`(Windows CMD)会校验版本、运行门禁、构建并验证安装包,最终产物统一复制到 `release/v<版本>/<平台>/` 并生成 `SHA256SUMS.txt`。显式传入新版本会同步所有版本文件,但不会自动创建或推送 Git tag。`scripts/release.py` 在 tag 推送后创建 Gitee Release、上传安装包和校验文件,并核对远程附件;先使用 `--dry-run` 检查待发布文件。平台打包必须在对应系统执行:macOS 在 macOS 构建,Windows x86_64 在 Windows 构建。
|
||
|
||
## 目录
|
||
|
||
```text
|
||
src/ React 界面与状态管理
|
||
src/i18n/ 界面文案(多语言)
|
||
src/platform/ Tauri 命令和事件适配层
|
||
shared/types/ 前后端共享 TypeScript 契约
|
||
src-tauri/ Rust / Tauri 原生后端
|
||
test/ 前端单元、组件与巡检测试
|
||
test/patrol/ SSH / SFTP / RDP / VNC 基础巡检
|
||
scripts/ 启动、验收、构建与发布脚本
|
||
docs/ 使用 / 架构 / 验收 / 发布文档
|
||
docs/assets/ 品牌与设计资源
|
||
```
|
||
|
||
## 快捷键
|
||
|
||
| 快捷键 | 功能 |
|
||
| -------------------------- | -------------------- |
|
||
| `Cmd/Ctrl + N` | 新建会话 |
|
||
| `Cmd/Ctrl + K` | 快速连接 |
|
||
| `Cmd/Ctrl + B` | 折叠/展开侧栏 |
|
||
| `Cmd/Ctrl + D` | 终端分屏 |
|
||
| `Cmd/Ctrl + W` | 关闭标签 |
|
||
| `Cmd + Option + I` / `F12` | 开发构建打开调试工具 |
|
||
|
||
## 文档
|
||
|
||
- [使用指南](docs/user-guide.md)
|
||
- [架构说明](docs/architecture.md)
|
||
- [SSH Agent CLI 设计](docs/ai-agent.md)
|
||
- [测试与验收](docs/testing-acceptance.md)
|
||
- [发布指南](docs/release.md)
|
||
- [路线图](ROADMAP.md)
|
||
- [当前任务](TASKS.md)
|
||
- [测试计划](TDD_PLAN.md)
|
||
|
||
## 许可证
|
||
|
||
MIT。完整文本见 [LICENSE](./LICENSE)。
|