# SSH-Client **Repository Path**: mini_cc/sshclient ## Basic Information - **Project Name**: SSH-Client - **Description**: SSH-Client 是基于 Tauri 的现代化 SSH 客户端应用,提供完整的 SSH 连接管理、终端操作、文件传输、端口转发等功能。仅20M大小软件秒开,自带的双屏本地+远程文件管理+文本编辑功能 非常好用! - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-02-18 - **Last Updated**: 2026-02-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SSH Client 一个基于 Tauri 的现代化 SSH 客户端应用,提供完整的 SSH 连接管理、终端操作、文件传输、端口转发等功能。 ## 📥 下载 > **macOS (x86_64)** | [下载 DMG 安装包](doc/download/SSH%20Client_0.1.0_x86_64.dmg) > **macOS (Apple Silicon)** | [下载 DMG 安装包](doc/download/SSH%20Client_0.1.0_arm64.dmg) > **Windows** | 过年回老家没带 Windows 电脑,后续看大家有需要我再补 ## 软件速览 | | | |:---:|:---:| | ![1](doc/img/1.png) | ![2](doc/img/2.png) | | ![3](doc/img/3.png) | ![4](doc/img/4.png) | | ![5](doc/img/5.png) | ![6](doc/img/6.png) | --- ## 功能清单 ### 1. 连接管理 - **连接配置管理** - 添加、编辑、删除 SSH 连接配置 - 支持密码认证和公钥认证 - 支持跳板机(ProxyJump)配置 - 支持 SSH Agent 转发 - 支持压缩传输选项 - 自定义 SSH 选项配置 - 默认本地/远程路径设置 - **连接分组** - 按组分类管理连接 - 分组折叠/展开显示 - 分组内连接快速访问 - **连接搜索** - 按名称、主机、端口、分组搜索 - 实时搜索过滤 - **最近连接** - 自动记录最近使用的连接(最多 30 条) - 快速访问最近连接 - **连接导入/导出** - 导出连接配置为 JSON(密码自动解码为明文) - 导入连接配置 JSON - 支持按主机IP+用户覆盖导入 - 支持批量选择导出(按组分类选择) ### 2. 操作终端 - **多会话终端** - 支持同时打开多个 SSH 会话 - 会话标签页管理(关闭、关闭其他、关闭左右、全部关闭) - 会话切换和状态管理 - 会话信息显示(主机、用户、状态) - **终端功能** - 基于 xterm.js 的高性能终端 - WebGL 渲染加速 - 终端搜索功能 - 终端自适应窗口大小 - 终端历史记录滚动 - 复制/粘贴支持 - **快捷命令面板** - 保存常用命令 - 快速执行命令 - 命令分类管理 - 批量执行模式(多会话同时执行) - **命令输入栏** - 快速输入命令到当前终端 - 命令历史记录 - 命令历史搜索和选择 - **命令历史** - 记录所有会话的命令历史 - 按会话、时间筛选 - 命令历史搜索 - 快速重新执行历史命令 - **终端与 SFTP 布局** - 可调整的终端/SFTP 分割比例 - 终端区域和文件管理区域独立显示 ### 3. SFTP 文件管理 - **双窗格文件浏览器** - 本地文件浏览器(左侧) - 远程文件浏览器(右侧) - 可调整窗格比例 - 键盘导航支持(方向键切换窗格、选择文件) - **文件操作** - 上传文件/文件夹到远程 - 下载远程文件/文件夹到本地 - 新建文件夹(本地/远程) - 新建文件(本地/远程) - 删除文件/文件夹(本地/远程) - 重命名文件/文件夹(本地/远程) - 复制文件路径 - **批量操作** - 多选文件(空格键勾选) - 批量上传/下载 - 批量压缩传输(多文件自动压缩) - **文件过滤规则** - 隐藏点文件选项 - 正则表达式过滤规则 - 连接级别和全局级别规则配置 - **文件压缩/解压** - 压缩文件/文件夹(zip、tar.gz) - 解压压缩包(zip、tar.gz、tar.bz2 等) - 支持本地和远程文件压缩/解压 - **远程文件编辑** - 双击文本文件打开编辑 - 右键菜单"打开编辑"选项 - 自动下载到临时目录编辑 - 保存后自动上传回远程 - **传输任务管理** - 传输任务列表显示 - 传输进度显示 - 传输速度显示 - 暂停/继续/取消传输 - 传输历史记录 - **键盘快捷键** - `←` `→` 切换窗格 - `↑` `↓` 选择文件 - `空格` 勾选文件 - `Enter` 进入文件夹 - `Shift+←` `Shift+→` 前进/后退历史 - `F7` 下载选中文件 - `F9` 上传选中文件 ### 4. 文本编辑 - **多文件编辑** - 同时打开多个文件编辑 - 标签页切换 - 文件标签显示(本地文件显示 `[本地]` 前缀) - 同名文件自动编号(`filename[1]`, `filename[2]`) - **代码编辑器** - 基于 CodeMirror 6 的高性能编辑器 - 语法高亮 - 行号显示 - 代码折叠 - 自动缩进 - 历史撤销/重做 - **远程文件编辑** - 打开远程文件自动下载到临时目录 - 编辑后保存自动上传回远程 - 上传进度显示 - **文件信息显示** - 文件完整路径显示 - 实时统计信息(行数、字符数、当前行字符数、选中内容字符数) - **标签页管理** - 右键菜单:关闭、关闭其他、关闭右边、关闭左边、全部关闭 - 快捷键 `Ctrl/Cmd+W` 关闭当前文件 - **自动跳转** - 所有文件关闭后自动跳转到操作终端页面 - **快捷键说明** - 编辑器底部显示快捷键帮助 ### 5. 系统监控 - **多会话监控** - 选择要监控的 SSH 会话 - 多会话切换查看 - **系统信息** - 操作系统信息 - CPU 型号和核心数 - CPU 使用率(实时) - 内存使用情况(总量、已用、可用、交换分区) - 内存使用率图表 - 网络接口信息(IP、MAC、状态) - 文件系统信息(挂载点、总容量、已用、可用、使用率) - 网络延迟(ping) - **进程监控** - 进程列表查看 - 进程详细信息 - 进程搜索和过滤 - **TCP 连接监控** - TCP 连接列表 - 连接状态和端口信息 - **实时更新** - 自动刷新监控数据 - 可手动刷新 ### 6. 端口转发 - **本地端口转发** - 将本地端口转发到远程主机端口 - 支持自定义本地地址和端口 - **远程端口转发** - 将远程端口转发到本地端口 - 支持自定义远程地址和端口 - **动态端口转发(SOCKS)** - 创建 SOCKS 代理 - 支持动态端口转发 - **转发规则管理** - 添加、编辑、删除转发规则 - 启动/停止转发 - 转发状态显示 - 转发规则持久化保存 ### 7. 密钥管理 - **SSH 密钥生成** - 支持 RSA、ED25519、ECDSA 密钥类型 - 自定义密钥位数 - 密钥注释设置 - 密钥密码保护(passphrase) - 自定义密钥文件名 - **密钥导入** - 导入现有 SSH 密钥 - 支持公钥和私钥导入 - **密钥列表** - 显示所有 SSH 密钥 - 密钥类型、位数、指纹信息 - 密钥路径显示 - 是否有密码保护标识 - **密钥操作** - 复制公钥内容 - 删除密钥 - 查看密钥详细信息 ### 8. SSH 配置 - **SSH Config 文件编辑** - 可视化编辑 SSH config 文件 - 添加、编辑、删除 Host 配置 - 常用选项快速选择 - 自定义选项配置 - 原始模式编辑(Raw Mode) - **配置管理** - 保存配置到系统 SSH config 文件 - 配置验证 - 配置格式化 ### 9. 关于我们 - **应用信息** - 版本号显示 - 检查更新功能 - 问题反馈链接 - **数据备份** - 导出数据库(包含所有配置数据) - 导入数据库(恢复所有配置) - **连接配置 JSON** - 导出连接配置 JSON(密码自动解码为明文) - 导入连接配置 JSON - 批量选择导出(按组分类,支持全选/取消全选) - 按主机IP+用户覆盖导入选项 - **安全设置** - 设置登录密码 - 修改登录密码 - 密码加密存储(参与 SSH 密码加密) - **登录保护** - 应用启动密码保护 - 会话超时自动锁定 - 密码验证机制 ## 开发说明 ### 环境要求 - Node.js >= 18.0.0 - pnpm >= 8.0.0 - Rust >= 1.70.0(用于 Tauri 后端编译) ### 安装依赖 ```bash # 安装前端依赖 pnpm install # 安装 Rust 依赖(首次运行会自动安装,或手动执行) cd src-tauri cargo build ``` ### 开发运行 ```bash # 启动开发服务器(前端 + Tauri 开发模式) pnpm tauri dev # 或者分别启动前端和后端 # 终端1:启动前端开发服务器 pnpm dev # 终端2:启动 Tauri 开发模式(需要先启动前端) pnpm tauri dev --no-dev-server ``` 开发服务器默认运行在 `http://localhost:1420` ### 构建打包 ```bash # 构建生产版本 pnpm tauri build # 构建产物位置 # macOS: src-tauri/target/release/bundle/ # Windows: src-tauri/target/release/bundle/ # Linux: src-tauri/target/release/bundle/ ``` 构建产物包括: - **macOS**: `.app` 应用包和 `.dmg` 安装包 - **Windows**: `.exe` 安装程序和 `.msi` 安装包 - **Linux**: `.AppImage`、`.deb`、`.rpm` 等格式 ### 一次打包多平台(macOS Intel + Apple Silicon + Windows) Tauri 的安装包**必须在本机对应系统上构建**(无法在 Mac 上直接产出 Windows 安装包),因此「一次打包所有平台」通常通过 **CI 多任务并行** 完成: - **推荐方式**:使用 **GitHub Actions**,一次推送或手动触发,并行跑 3 个任务: - macOS(Apple Silicon)→ `.dmg` - macOS(Intel)→ `.dmg` - Windows → `.msi` / `.exe` - 本仓库已包含工作流:`.github/workflows/release.yml` **用法**:推送到 `release` 分支,或在 Actions 页选择 “release” 工作流 → “Run workflow”。构建结束后在 **Releases** 里会出现一条草稿发布,包含上述三个安装包。 **本地只打当前系统**: ```bash # 当前是 Mac 时,只产出 macOS 安装包(与当前 CPU 架构一致) pnpm tauri build # 在 Mac 上同时打 Intel 和 Apple Silicon(需先安装对应 target) rustup target add x86_64-apple-darwin aarch64-apple-darwin pnpm tauri build -- --target x86_64-apple-darwin # Intel pnpm tauri build -- --target aarch64-apple-darwin # Apple Silicon ``` **Windows 安装包** 只能在 Windows 本机或 CI 的 `windows-latest` 上运行 `pnpm tauri build` 得到,无法在 macOS/Linux 上直接生成。 ### 项目结构 ``` SSH-Client/ ├── src/ # 前端源代码 │ ├── components/ # Vue 组件 │ ├── views/ # 页面视图 │ ├── stores/ # Pinia 状态管理 │ ├── types/ # TypeScript 类型定义 │ ├── router/ # 路由配置 │ └── main.ts # 应用入口 ├── src-tauri/ # Tauri 后端(Rust) │ ├── src/ │ │ ├── commands/ # Tauri 命令(前端可调用的后端函数) │ │ ├── modules/ # 业务模块 │ │ └── main.rs # 后端入口 │ ├── Cargo.toml # Rust 依赖配置 │ └── tauri.conf.json # Tauri 应用配置 ├── package.json # Node.js 依赖和脚本 └── vite.config.ts # Vite 构建配置 ``` ### 技术栈 **前端** - Vue 3 (Composition API) - TypeScript - Element Plus (UI 组件库) - Pinia (状态管理) - Vue Router (路由) - CodeMirror 6 (代码编辑器) - xterm.js (终端模拟器) **后端** - Rust - Tauri 2.x - SSH2 (SSH 客户端库) - SQLite (数据存储) - AES-GCM (加密) ### 常用命令 ```bash # 开发 pnpm dev # 仅启动前端开发服务器 pnpm tauri dev # 启动完整应用(前端 + 后端) # 构建 pnpm build # 构建前端 pnpm tauri build # 构建完整应用 # 代码检查 pnpm vue-tsc --noEmit # TypeScript 类型检查 # Rust 相关 cd src-tauri cargo check # 检查 Rust 代码 cargo build # 构建 Rust 后端 cargo test # 运行 Rust 测试 ``` ### 调试技巧 1. **前端调试** - 开发模式下,前端代码支持热重载 - 使用浏览器开发者工具调试(在 Tauri 窗口中右键选择"检查元素") 2. **后端调试** - 使用 `println!` 或 `log` crate 输出日志 - Rust 代码修改后需要重新编译 3. **数据库调试** - 数据库文件位置:`~/.ssh-client/database.db`(macOS/Linux)或 `%APPDATA%/ssh-client/database.db`(Windows) - 可使用 SQLite 工具查看数据库内容 ### 注意事项 1. **首次运行** - 首次运行需要设置登录密码(可跳过) - 数据库和配置文件会自动创建 2. **跨平台兼容性** - 代码已考虑跨平台兼容性(Windows、macOS、Linux) - 路径处理使用 Rust 的 `PathBuf` 确保跨平台兼容 3. **安全考虑** - SSH 密码使用 AES-GCM 加密存储 - 加密密钥由用户登录密码派生 - 导出 JSON 时密码会解码为明文(方便分享) 4. **性能优化** - 大文件传输使用压缩传输 - 终端使用 WebGL 渲染加速 - 文件列表使用虚拟滚动(如需要) ### 问题排查 1. **依赖安装失败** ```bash # 清除缓存重新安装 rm -rf node_modules pnpm-lock.yaml pnpm install ``` 2. **Rust 编译失败** ```bash # 更新 Rust 工具链 rustup update # 清理构建缓存 cd src-tauri cargo clean cargo build ``` 3. **Tauri 构建失败** - 检查系统依赖是否安装完整 - macOS: 需要 Xcode Command Line Tools - Linux: 需要 `libwebkit2gtk` 等系统库 - Windows: 需要 Visual Studio Build Tools 4. **数据库错误** - 删除数据库文件重新创建(会丢失所有数据) - 检查文件权限 ### 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ### 许可证 [Apache-2.0] --- **版本**: 0.1.0 **最后更新**: 2026-02-17