liumangmang 2c06329d68 feat: implement MobaXterm-style layout (Phase 1-2-4)
实现 MobaXterm 风格的界面重构,包含会话树、工作区面板和分屏功能。

新增功能:
- 左侧会话树支持文件夹分组和展开/折叠
- 工作区垂直分屏(终端 + SFTP)
- 可拖拽调整分割比例
- 状态持久化到 localStorage
- 顶部工具栏(样式占位)

技术实现:
- 新增 sessionTreeStore 和 workspaceStore 状态管理
- 新增 SessionTree/SessionTreeNode 递归组件
- 新增 SplitPane 可拖拽分割组件
- 重构 SftpPanel 为 props 驱动
- 新增 MobaLayout 主布局
- 路由默认重定向到 /moba

依赖更新:
- 安装 @vueuse/core 用于拖拽功能

待实现:
- Phase 3: 会话树拖拽排序
- Phase 5: 数据迁移
- Phase 6: 快捷键、右键菜单、搜索等优化

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:14:36 +08:00
2026-03-18 23:00:15 +08:00
2026-03-24 13:52:24 +08:00

SSH 管理器

基于 Web 的 SSH 连接管理工具,支持终端与 SFTP 文件传输。技术栈Vue 3、Spring BootJDK 8、JSch、xterm.js。

功能

  • 认证本地用户登录JWT
  • 连接管理SSH 连接的增删改查(密码或私钥)
  • 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 会代理到后端)

生产构建

# 后端
cd backend && mvn package

# 前端
cd frontend && npm run build

frontend/dist 目录内容复制到后端的静态资源目录,或单独部署前端。

项目结构

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/sshmanager

环境变量

  • SSHMANAGER_ENCRYPTION_KEY:覆盖加密密钥
  • SSHMANAGER_JWT_SECRET:覆盖 JWT 密钥

安全说明

  • 连接密码与私钥均以 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%