# SSH-Client **Repository Path**: bean80/sshclient ## Basic Information - **Project Name**: SSH-Client - **Description**: Rust开发,完整的 SSH 连接管理、终端操作、文件管理、端口转发、包管理、服务管理、Docker面板、AI Agent 等丰富功能。仅20M大小软件秒开,致敬超越 FinalShell🫡 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2026-02-17 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: ssh-client, sshclient, 服务器管理, Docker面板, AI-SSH ## README # SSH Client 一个基于 Tauri 的现代化 SSH 客户端应用,提供完整的 SSH 连接管理、终端操作、文件传输、端口转发等功能。 ## 📥 下载 > **macOS (x86_64)** | [下载 DMG 安装包](doc/download/SSH%20Client_0.2.0_x86_64.dmg) > **macOS (Apple Silicon)** | [下载 DMG 安装包](doc/download/SSH%20Client_0.2.0_arm64.dmg) > **Windows (x86_64)** | [下载 exe 软件包](doc/download/SSH%20Client_0.2.0_x86_64.exe) ## 软件速览 | | | |:---:|:---:| | ![1](doc/img/7.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` 上传选中文件 - **Git 管理** - 在远程目录中拉取(Pull)、推送(Push)、暂存(Stash)、提交(Commit) - 拉取前可自动暂存本地修改,拉取完成后恢复;若产生冲突可进入三屏合并解决 - 支持选择远程分支推送、查看远程与本地分支列表 - **冲突三屏合并** - 合并冲突时以三栏展示:本地(当前)、Base(共同祖先)、远程(对方) - 可逐块选择保留「本地」或「远程」,或手动编辑后保存 - 解决完成后保存,再执行暂存、提交即可完成合并 ### 4. 文本编辑 - **多文件编辑** - 同时打开多个文件编辑 - 标签页切换 - 文件标签显示(本地文件显示 `[本地]` 前缀) - 同名文件自动编号(`filename[1]`, `filename[2]`) - **代码编辑器** - 基于 CodeMirror 6 的高性能编辑器 - 语法高亮 - 行号显示 - 代码折叠 - 自动缩进 - 历史撤销/重做 - **远程文件编辑** - 打开远程文件自动下载到临时目录 - 编辑后保存自动上传回远程 - 上传进度显示 - **文件信息显示** - 底部显示完整路径;远程文件显示「连接名称 · 主机 · 路径」,点击主机可跳回对应终端会话 - 实时统计信息(行数、字符数、当前行字符数、选中内容字符数) - **标签页管理** - 右键菜单:关闭、关闭其他、关闭右边、关闭左边、全部关闭 - 快捷键 `Ctrl/Cmd+W` 关闭当前文件 - **自动跳转** - 所有文件关闭后自动跳转到操作终端页面 - **快捷键说明** - 编辑器底部显示快捷键帮助 ### 5. 人工智能(AI Agent) - **配置** - 在「关于我们」中配置模型平台(如 DeepSeek、OpenAI)、API 地址、模型名与 API Key - 接口遵循 OpenAI API 规范,支持多种兼容服务 - **Chat 模式** - 普通对话,AI 回复支持 Markdown 渲染 - 回复中的 bash 代码块可一键「发送到终端」;多会话时可选择在哪些会话上执行 - **Agent 模式** - 自然语言描述需求,AI 生成单条 shell 命令并在远程会话上执行(不经过终端 PTY) - 自动带上目标服务器的系统与架构信息,便于生成更贴合的命令 - 执行失败时可自动重试(最多 3 次),由 AI 根据错误信息生成替代命令 - 多会话时可勾选要在哪些会话上执行同一条命令 - 支持「终止」当前处理,避免长时间等待 - **终端联动** - 终端中选中内容后,点击工具栏「发送选中到 Agent」,可附带服务器环境信息并跳转到 AI 页填入输入框 - Agent 面板中代码块「发送到终端」会填入操作终端右侧的命令输入框,可修改后批量发送到多会话 ### 6. 应用仓库(包管理) - **包管理器检测** - 根据远程系统自动检测包管理器(apt / yum / dnf) - 会话选择后自动检测并显示当前包管理器 - **包列表** - 已安装包列表、可升级包列表、全部列表(已安装 + 可升级) - 按包名/描述筛选 - 显示包名、版本、描述、状态 - **远程搜索** - 按关键词远程搜索包(apt search / yum search / dnf search) - 搜索结果支持安装、查看详情 - **包操作** - 包详情(apt show / yum info 原始输出) - 安装、卸载(apt 支持 purge)、升级 - 刷新索引、清理缓存 - 自动移除(apt 专有,移除未使用依赖) - **批量操作** - 多选后批量卸载、批量升级 - 需 root/sudo 权限 ### 7. 服务管理(systemd) - **服务列表** - 已加载单元列表(含负载、激活、子状态、描述) - 单元文件列表(启用状态) - 按类型、显示全部、搜索过滤 - 列表满屏、键盘友好 - **服务操作** - 启停/重启/重载、启用/禁用、屏蔽/解屏 - 右键菜单操作 - 状态、日志(journalctl)、show、依赖查看 - 批量启动、批量停止 - **系统与 Target** - 默认目标显示与设置(multi-user / graphical) - 切换目标(isolate) - 关机、重启 - daemon-reload - **添加单元** - 创建 systemd 单元文件(单元名、描述、启动命令、重启策略、开机启用、立即启动) - 写入远程 `/etc/systemd/system/`,需 sudo ### 8. Docker 管理 - **检测与会话** - 选择已连接会话后自动检测远程 Docker 是否可用(docker version) - 未检测到或无法执行时提示 - **容器** - 列表(ID、镜像、状态、名称、端口) - 启动、停止、重启、删除 - 日志(可调行数)、详情(inspect) - 运行新容器(镜像、名称、命令、端口映射、环境变量) - **镜像** - 列表(ID、仓库、标签、大小、创建时间) - 拉取镜像、删除镜像、清理未使用镜像 - 详情(inspect) - **网络** - 列表(ID、名称、驱动、作用域) - 创建网络、删除网络、详情 - **数据卷** - 列表(名称、驱动、挂载点) - 创建数据卷、删除数据卷、清理未使用数据卷、详情 - **系统** - 显示 docker version、docker system df、docker info - 清理未使用资源(可选含数据卷) ### 9. 系统监控 - **多会话监控** - 选择要监控的 SSH 会话 - 多会话切换查看 - **系统信息** - 操作系统信息 - CPU 型号和核心数 - CPU 使用率(实时) - 内存使用情况(总量、已用、可用、交换分区) - 内存使用率图表 - 网络接口信息(IP、MAC、状态) - 文件系统信息(挂载点、总容量、已用、可用、使用率) - 网络延迟(ping) - **进程监控** - 进程列表查看 - 进程详细信息 - 进程搜索和过滤 - **TCP 连接监控** - TCP 连接列表 - 连接状态和端口信息 - **实时更新** - 自动刷新监控数据 - 可手动刷新 ### 10. 端口转发 - **本地端口转发** - 将本地端口转发到远程主机端口 - 支持自定义本地地址和端口 - **远程端口转发** - 将远程端口转发到本地端口 - 支持自定义远程地址和端口 - **动态端口转发(SOCKS)** - 创建 SOCKS 代理 - 支持动态端口转发 - **转发规则管理** - 添加、编辑、删除转发规则 - 启动/停止转发 - 转发状态显示 - 转发规则持久化保存 ### 11. 密钥管理 - **SSH 密钥生成** - 支持 RSA、ED25519、ECDSA 密钥类型 - 自定义密钥位数 - 密钥注释设置 - 密钥密码保护(passphrase) - 自定义密钥文件名 - **密钥导入** - 导入现有 SSH 密钥 - 支持公钥和私钥导入 - **密钥列表** - 显示所有 SSH 密钥 - 密钥类型、位数、指纹信息 - 密钥路径显示 - 是否有密码保护标识 - **密钥操作** - 复制公钥内容 - 删除密钥 - 查看密钥详细信息 ### 12. SSH 配置 - **SSH Config 文件编辑** - 可视化编辑 SSH config 文件 - 添加、编辑、删除 Host 配置 - 常用选项快速选择 - 自定义选项配置 - 原始模式编辑(Raw Mode) - **配置管理** - 保存配置到系统 SSH config 文件 - 配置验证 - 配置格式化 ### 13. 关于我们 - **应用信息** - 版本号显示 - 开源仓库链接 - 问题反馈链接 - **数据备份** - 导出数据库(包含所有配置数据) - 导入数据库(恢复所有配置) - **安全设置** - 设置登录密码 - 修改登录密码 - 密码加密存储(参与 SSH 密码加密) - **登录保护** - 应用启动密码保护 - 会话超时自动锁定 - 密码验证机制 ## 开发说明 ### 环境要求 - Node.js >= 18.0.0 - pnpm >= 8.0.0 - Rust >= 1.70.0(用于 Tauri 后端编译) **Windows 打包额外要求:** - **Visual Studio 2022 Build Tools**(含「使用 C++ 的桌面开发」工作负载),或已安装的 MSVC 工具链 - **Strawberry Perl**(用于从源码构建 OpenSSL)。从 [Strawberry Perl 下载页](https://strawberryperl.com/) 安装 64 位版本,或解压便携版到 `C:\strawberry-perl`,构建脚本会自动使用该路径下的 Perl ### 安装依赖 ```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/ ``` **Windows 一键打包:** 在项目根目录执行 `.\build.ps1`,会自动检查环境、构建前端并打包 Tauri(生成 exe 与 msi)。需已安装上述 Windows 额外依赖(MSVC、Strawberry Perl)。 构建产物包括: - **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 渲染加速 - SFTP 文件列表使用虚拟表格,大目录下滚动更流畅 ### 问题排查 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] --- **版本**: v0.2.0 **最后更新**: 2026-02-13