Files
ssh-manager/README.md
2026-04-16 23:28:26 +08:00

207 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SSH 管理器
基于 Web 的 SSH / SFTP 工作区项目适合源码交付、私有部署和二次开发。技术栈Vue 3、Spring BootJDK 8、JSch、xterm.js。
## 功能
- **认证**本地用户登录JWT
- **账户安全**:默认管理员登录后会提示修改密码
- **连接管理**SSH 连接的增删改查(密码或私钥)
- **Moba 工作区**:统一入口 `/moba`,支持多工作区实例、多标签和终端/SFTP 分屏
- **Web 终端**:通过 WebSocket + xterm.js 实现实时 SSH 终端
- **SFTP**:文件浏览、搜索、隐藏文件切换、上传/下载、远程传输、删除、创建目录
- **批量能力**:批量命令执行、操作日志、传输历史
- **交付辅助**:首次启动引导、关于与交付信息、诊断摘要、备份恢复
## 环境要求
- JDK 8+
- Node.js 18+
- Maven 3.6+
## 快速开始
### 后端
```bash
cd backend
mvn spring-boot:run
```
后端运行在 http://localhost:48080
默认登录:`admin` / `admin123`
### 前端
```bash
cd frontend
npm install
npm run dev
```
前端运行在 http://localhost:5173API 与 WebSocket 会代理到后端)
默认登录后进入 `/moba` 工作区。历史路径 `/connections``/terminal` 会跳转到 `/moba`;带连接 ID 的旧深链接 `/terminal/:id``/sftp/:id` 会先打开对应工作区,再进入 `/moba`
`/moba` 中,点击左侧连接会创建新的工作区实例;同一连接可重复打开多个实例。
## 交付形态
当前仓库支持两种交付方向:
- 源码仓库版:适合会自己部署、要二开的买家
- Windows 安装版:适合普通买家,安装后双击快捷方式即可使用
## 源码交付建议
如果你按源码版本售卖,建议交付时至少包含:
- 当前仓库源码
- `README.md` 或独立部署文档
- Docker 启动方式
- 默认账号与修改密码说明
- 环境变量说明
- 备份导入导出示例
- 售后排查时用到的诊断摘要入口说明
源码版当前不依赖授权码,买家拿到后可自行部署、二开和迁移环境。
## Windows 安装版
Windows 成品版仍然是本地 Web 应用,但可封装为安装包:
- 安装程序:`Setup.exe`
- 安装目录:`C:\Program Files\SSH Manager\`
- 数据目录:`%LOCALAPPDATA%\SSHManager\data`
- 日志目录:`%LOCALAPPDATA%\SSHManager\logs`
安装后双击快捷方式会:
- 自动检测程序是否已启动
- 首次生成本地密钥
- 后台启动内置 jar
- 自动打开浏览器到 `http://127.0.0.1:48080`
## 启动方式
### Windows 本地验证
- 先准备 Java 8+
- 构建后可直接运行:
- `scripts/windows/start-local.bat`
- 本地打包验证:
- `scripts/release/build-local-package.bat`
脚本会自动:
- 创建 `runtime/``data/`
- 首次生成本地密钥
- 启动后端 jar
### Windows 安装版构建
先准备:
- Node.js 18+
- Maven 3.6+
- Inno Setup
- 一个已解压的 Windows JRE 目录,并设置环境变量 `SSH_MANAGER_WINDOWS_JRE_DIR`
- 发布版本号取自 `backend/pom.xml``<version>`
建议先执行预检:
```bat
scripts\release\check-windows-release.bat
```
执行:
```bat
scripts\release\build-windows-installer.bat
```
脚本会自动:
- 构建前端
-`embed-frontend-dist` profile 打包后端
- 组装 `release/windows-app/`
- 如检测到 `ISCC.exe`,生成 `release/windows-installer/SSHManager-Setup-*.exe`
- 自动带上安装器图标和买家 / 售后说明文档
### Docker 版
- Windows 一键启动验证:
- `scripts/windows/start-docker.bat`
- 停止:
- `scripts/windows/stop-docker.bat`
更完整的交付说明见:
- `docs/delivery-guide.md`
### 生产构建
```bash
# 前端
cd frontend && npm run build
# 后端
cd backend && mvn -Pembed-frontend-dist package
```
## 验证建议
- 前端改动后至少运行:
```bash
cd frontend
npm run build
```
- Moba 工作区相关回归项见:
- `docs/moba-regression-checklist.md`
## 项目结构
```
ssh-manager/
├── backend/ # Spring BootJDK 8
│ └── src/main/java/com/sshmanager/
│ ├── config/ # 安全、WebSocket、CORS
│ ├── controller/
│ ├── service/
│ ├── entity/
│ └── repository/
├── frontend/ # Vue 3 + Vite + Tailwind
│ └── src/
│ ├── views/
│ ├── components/
│ ├── stores/
│ └── api/
└── docs/design-system/ # UI/UX 规范
```
## 配置
### 后端application.yml
- `sshmanager.encryption-key`:用于加密连接密码的 Base64 32 字节密钥
- `sshmanager.jwt-secret`JWT 签名密钥
- `spring.datasource.url`H2 数据库路径(默认:`${DATA_DIR:/app/data}/sshmanager`
### 环境变量
- `SSHMANAGER_ENCRYPTION_KEY`:覆盖加密密钥
- `SSHMANAGER_JWT_SECRET`:覆盖 JWT 密钥
- `DATA_DIR`:数据目录(默认 `/app/data`Docker 下应保持卷挂载)
### Docker 持久化说明
- 默认通过 `make up` / `make restart` 运行,数据存放在 `app-data` 命名卷。
- `make down` 仅停止并移除容器,不删除卷数据。
- 不要使用 `docker compose ... down -v`,该命令会删除卷并导致数据丢失。
## 安全说明
- 连接密码与私钥均以 AES-256-GCM 加密存储
- 所有 API 接口需 JWT 认证
- WebSocket 连接在握手时校验 JWT
- CORS 仅允许前端来源