5.4 KiB
5.4 KiB
SSH 管理器
基于 Web 的 SSH / SFTP 工作区项目,适合源码交付、私有部署和二次开发。技术栈:Vue 3、Spring Boot(JDK 8)、JSch、xterm.js。
功能
- 认证:本地用户登录(JWT)
- 账户安全:默认管理员登录后会提示修改密码
- 连接管理:SSH 连接的增删改查(密码或私钥)
- Moba 工作区:统一入口
/moba,支持多工作区实例、多标签和终端/SFTP 分屏 - Web 终端:通过 WebSocket + xterm.js 实现实时 SSH 终端
- SFTP:文件浏览、搜索、隐藏文件切换、上传/下载、远程传输、删除、创建目录
- 批量能力:批量命令执行、操作日志、传输历史
- 交付辅助:首次启动引导、关于与交付信息、诊断摘要、备份恢复
环境要求
- JDK 8+
- Node.js 18+
- Maven 3.6+
快速开始
后端
cd backend
mvn spring-boot:run
后端运行在 http://localhost:48080
默认登录:admin / admin123
前端
cd frontend
npm install
npm run dev
前端运行在 http://localhost:5173(API 与 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>
建议先执行预检:
scripts\release\check-windows-release.bat
执行:
scripts\release\build-windows-installer.bat
脚本会自动:
- 构建前端
- 以
embed-frontend-distprofile 打包后端 - 组装
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
生产构建
# 前端
cd frontend && npm run build
# 后端
cd backend && mvn -Pembed-frontend-dist package
验证建议
- 前端改动后至少运行:
cd frontend
npm run build
- Moba 工作区相关回归项见:
docs/moba-regression-checklist.md
项目结构
ssh-manager/
├── backend/ # Spring Boot(JDK 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 仅允许前端来源