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+

快速开始

后端

cd backend
mvn spring-boot:run

后端运行在 http://localhost:48080

默认登录:admin / admin123

前端

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>

建议先执行预检:

scripts\release\check-windows-release.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

生产构建

# 前端
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 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-secretJWT 签名密钥
  • spring.datasource.urlH2 数据库路径(默认:${DATA_DIR:/app/data}/sshmanager

环境变量

  • SSHMANAGER_ENCRYPTION_KEY:覆盖加密密钥
  • SSHMANAGER_JWT_SECRET:覆盖 JWT 密钥
  • DATA_DIR:数据目录(默认 /app/dataDocker 下应保持卷挂载)

Docker 持久化说明

  • 默认通过 make up / make restart 运行,数据存放在 app-data 命名卷。
  • make down 仅停止并移除容器,不删除卷数据。
  • 不要使用 docker compose ... down -v,该命令会删除卷并导致数据丢失。

安全说明

  • 连接密码与私钥均以 AES-256-GCM 加密存储
  • 所有 API 接口需 JWT 认证
  • WebSocket 连接在握手时校验 JWT
  • CORS 仅允许前端来源
Description
Mirror of ssh-manager from gitee
Readme 847 KiB
v1.0.1 Latest
2026-03-08 16:04:14 +00:00
Languages
Vue 46.5%
Java 37.8%
TypeScript 14.5%
Dockerfile 0.4%
CSS 0.4%
Other 0.2%