update README.MD
This commit is contained in:
1 parent
657775bf27
commit
0b07fb2d80
3 files changed
+217
-141
No files matched your search
@@ -1,172 +1,95 @@
|
||||
# WebSSH - 在线SSH终端工具
|
||||
|
||||
一个基于Web的SSH终端工具,模仿Xshell的功能,提供完整的Web版SSH客户端体验。
|
||||
一个基于Web的SSH终端工具,提供完整的Web版SSH客户端体验。
|
||||
|
||||
## ✨ 功能特性
|
||||
## ✨ 核心功能
|
||||
|
||||
### ✅ 已实现功能
|
||||
- **用户认证**: 注册、登录、JWT令牌认证
|
||||
- **服务器管理**: 服务器增删改查、分组管理
|
||||
- **SSH终端**: 基于xterm.js的Web终端,支持密码和私钥认证
|
||||
- **数据安全**: AES-256加密存储敏感信息
|
||||
|
||||
#### 用户认证系统 (P0)
|
||||
- 用户注册(邮箱+密码)
|
||||
- 用户登录(JWT令牌认证)
|
||||
- 密码加密存储(bcrypt)
|
||||
- 路由守卫和权限控制
|
||||
## 🚀 快速部署
|
||||
|
||||
#### 服务器资产管理 (P0)
|
||||
- 服务器增删改查
|
||||
- 支持密码和私钥认证
|
||||
- AES-256加密存储敏感信息
|
||||
- 服务器分组管理
|
||||
- 树形结构展示
|
||||
### 📦 Docker 一键部署(推荐)
|
||||
|
||||
#### SSH终端核心功能 (P0)
|
||||
- 基于xterm.js的Web终端
|
||||
- WebSocket实时通信
|
||||
- SSH2库后端连接
|
||||
- 终端窗口自适应
|
||||
- 命令输入和输出
|
||||
- 快捷键支持(Ctrl+C等)
|
||||
```bash
|
||||
# 一键部署(包含Docker环境检查、镜像构建、服务启动)
|
||||
./deploy.sh
|
||||
|
||||
#### 前端界面 (P0)
|
||||
- Vue3 + Element Plus现代化界面
|
||||
- 响应式设计
|
||||
- 服务器管理面板
|
||||
- 终端界面
|
||||
- 快速连接功能
|
||||
# 部署完成后访问:http://localhost:3000
|
||||
```
|
||||
|
||||
### 🔄 待实现功能
|
||||
**部署特点:**
|
||||
- 自动构建多阶段Docker镜像
|
||||
- 包含MySQL数据库服务
|
||||
- 自动生成安全的加密密钥
|
||||
- 健康检查和服务监控
|
||||
|
||||
- [ ] SFTP文件传输功能 (P1)
|
||||
- [ ] 多标签页支持 (P1)
|
||||
- [ ] 分屏显示 (P1)
|
||||
- [ ] 终端外观定制 (P2)
|
||||
- [ ] 快捷命令功能 (P2)
|
||||
- [ ] 连接保持和自动重连 (P1)
|
||||
- [ ] 操作日志记录 (P2)
|
||||
### 🛠️ 手动部署
|
||||
|
||||
## 🏗️ 技术架构
|
||||
**环境要求:** Node.js 16+, MySQL 5.7+
|
||||
|
||||
### 前端技术栈
|
||||
- **框架**: Vue 3 + Vite
|
||||
- **UI组件库**: Element Plus
|
||||
- **终端组件**: xterm.js + xterm-addon-fit
|
||||
- **状态管理**: Pinia
|
||||
- **路由**: Vue Router
|
||||
- **HTTP客户端**: Axios
|
||||
- **WebSocket**: socket.io-client
|
||||
```bash
|
||||
# 1. 安装依赖
|
||||
npm install
|
||||
|
||||
### 后端技术栈
|
||||
- **运行时**: Node.js
|
||||
- **Web框架**: Express.js
|
||||
- **SSH连接**: ssh2库
|
||||
- **实时通信**: Socket.IO
|
||||
- **数据库**: MySQL
|
||||
- **认证**: JWT + bcryptjs
|
||||
- **加密**: AES-256-GCM
|
||||
# 2. 数据库初始化
|
||||
mysql -u root -p < install.sql
|
||||
|
||||
### 数据库设计
|
||||
```sql
|
||||
-- 用户表
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
phone VARCHAR(20),
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
# 3. 环境配置
|
||||
cp backend/.env.example backend/.env
|
||||
# 编辑 backend/.env 文件
|
||||
|
||||
-- 分组表
|
||||
CREATE TABLE IF NOT EXISTS `groups` (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
UNIQUE KEY unique_user_group (user_id, name)
|
||||
);
|
||||
|
||||
-- 服务器表
|
||||
CREATE TABLE IF NOT EXISTS servers (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
host VARCHAR(255) NOT NULL,
|
||||
port INT DEFAULT 22,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
password_encrypted TEXT,
|
||||
private_key_encrypted TEXT,
|
||||
auth_type ENUM('password', 'key') DEFAULT 'password',
|
||||
group_id INT,
|
||||
group_name VARCHAR(255) DEFAULT 'Default',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (group_id) REFERENCES groups(id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
-- 连接日志表
|
||||
CREATE TABLE IF NOT EXISTS connection_logs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
server_id INT,
|
||||
host VARCHAR(255) NOT NULL,
|
||||
start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
end_time TIMESTAMP NULL,
|
||||
duration INT DEFAULT 0,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE SET NULL
|
||||
);
|
||||
# 4. 启动应用
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 📁 项目结构
|
||||
|
||||
```
|
||||
webssh/
|
||||
├── backend/ # Node.js后端服务
|
||||
│ ├── config/
|
||||
│ │ └── database.js # 数据库配置和初始化
|
||||
│ ├── routes/ # API路由
|
||||
│ │ ├── auth.js # 认证相关路由
|
||||
│ │ └── servers.js # 服务器管理路由
|
||||
│ ├── socket/ # WebSocket处理
|
||||
│ │ └── socketHandler.js # SSH连接处理
|
||||
│ ├── utils/
|
||||
│ │ └── encryption.js # 加密工具类
|
||||
│ ├── .env # 环境变量配置
|
||||
│ ├── package.json # 后端依赖配置
|
||||
│ └── server.js # 主服务器入口
|
||||
├── frontend/ # Vue3前端应用
|
||||
│ ├── src/
|
||||
│ │ ├── components/ # 可复用组件
|
||||
│ │ │ └── ServerForm.vue # 服务器表单组件
|
||||
│ │ ├── router/ # 路由配置
|
||||
│ │ │ └── index.js # 路由定义和守卫
|
||||
│ │ ├── stores/ # 状态管理
|
||||
│ │ │ ├── auth.js # 用户认证状态
|
||||
│ │ │ ├── servers.js # 服务器管理状态
|
||||
│ │ │ └── terminal.js # 终端连接状态
|
||||
│ │ ├── views/ # 页面组件
|
||||
│ │ │ ├── Dashboard.vue # 主仪表板
|
||||
│ │ │ ├── Login.vue # 登录页面
|
||||
│ │ │ ├── Register.vue # 注册页面
|
||||
│ │ │ └── Terminal.vue # 终端页面
|
||||
│ │ ├── App.vue # 根组件
|
||||
│ │ └── main.js # 应用入口
|
||||
│ ├── index.html # HTML模板
|
||||
│ ├── package.json # 前端依赖配置
|
||||
│ └── vite.config.js # Vite构建配置
|
||||
├── package.json # 根项目配置
|
||||
└── README.md # 项目说明文档
|
||||
├── backend/ # Node.js后端服务
|
||||
├── frontend/ # Vue3前端应用
|
||||
├── deploy.sh # Docker部署脚本
|
||||
├── docker-compose.yml # 容器编排配置
|
||||
├── Dockerfile # 容器构建配置
|
||||
└── install.sql # 数据库初始化脚本
|
||||
```
|
||||
|
||||
## 🔧 技术栈
|
||||
|
||||
**前端**: Vue 3 + Vite + Element Plus + xterm.js
|
||||
**后端**: Node.js + Express + Socket.IO + MySQL
|
||||
**部署**: Docker + Docker Compose
|
||||
|
||||
---
|
||||
|
||||
*详细文档请查看 [docs/](docs/) 目录*
|
||||
*数据库设计请查看 [install.sql](install.sql)*
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 环境要求
|
||||
- Node.js 16+
|
||||
- MySQL 5.7+
|
||||
- Docker 20.10+ (使用Docker部署)
|
||||
|
||||
### 📦 Docker 快速部署(推荐)
|
||||
|
||||
```bash
|
||||
# 一键部署(包含Docker环境检查、镜像构建、服务启动)
|
||||
./deploy.sh
|
||||
|
||||
# 部署完成后访问:http://localhost:3000
|
||||
```
|
||||
|
||||
**Docker部署特点:**
|
||||
- 自动构建多阶段Docker镜像
|
||||
- 包含MySQL数据库服务
|
||||
- 自动生成安全的加密密钥
|
||||
- 健康检查和服务监控
|
||||
- 生产环境配置
|
||||
|
||||
### 1. 克隆项目
|
||||
```bash
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
# 部署指南
|
||||
|
||||
## Docker 部署
|
||||
|
||||
### 快速开始
|
||||
```bash
|
||||
# 一键部署
|
||||
./deploy.sh
|
||||
|
||||
# 访问应用
|
||||
http://localhost:3000
|
||||
```
|
||||
|
||||
### 部署脚本功能
|
||||
- 自动检查Docker环境
|
||||
- 清理现有容器和镜像
|
||||
- 生成生产环境配置文件
|
||||
- 构建Docker镜像
|
||||
- 启动服务并健康检查
|
||||
|
||||
### 环境变量
|
||||
部署脚本会自动生成 `.env.production` 文件:
|
||||
|
||||
```env
|
||||
# 数据库配置
|
||||
DB_HOST=mysql
|
||||
DB_PORT=3306
|
||||
DB_USER=webssh_user
|
||||
DB_PASSWORD=webssh_password
|
||||
DB_NAME=webssh
|
||||
|
||||
# JWT配置
|
||||
JWT_SECRET=<随机生成>
|
||||
|
||||
# 服务器配置
|
||||
PORT=3000
|
||||
NODE_ENV=production
|
||||
|
||||
# 加密密钥(32字节)
|
||||
ENCRYPTION_KEY=<随机生成>
|
||||
```
|
||||
|
||||
## 手动部署
|
||||
|
||||
### 环境要求
|
||||
- Node.js 16+
|
||||
- MySQL 5.7+
|
||||
|
||||
### 步骤
|
||||
|
||||
1. **安装依赖**
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
2. **数据库初始化**
|
||||
```bash
|
||||
mysql -u root -p < install.sql
|
||||
```
|
||||
|
||||
3. **环境配置**
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
# 编辑 backend/.env 文件
|
||||
```
|
||||
|
||||
4. **启动应用**
|
||||
```bash
|
||||
# 开发模式
|
||||
npm run dev
|
||||
|
||||
# 生产模式
|
||||
npm run build
|
||||
npm start
|
||||
```
|
||||
|
||||
### 端口配置
|
||||
- 前端:5173 (开发) / 3000 (生产)
|
||||
- 后端:3000
|
||||
- MySQL:3306
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
**Docker 部署问题**
|
||||
```bash
|
||||
# 检查服务状态
|
||||
docker compose ps
|
||||
|
||||
# 查看日志
|
||||
docker compose logs
|
||||
|
||||
# 重启服务
|
||||
docker compose restart
|
||||
```
|
||||
|
||||
**加密密钥错误**
|
||||
确保 ENCRYPTION_KEY 为32字节长度:
|
||||
```bash
|
||||
node -e "console.log(process.env.ENCRYPTION_KEY.length)"
|
||||
```
|
||||
|
||||
**数据库连接失败**
|
||||
检查MySQL服务状态和用户权限:
|
||||
```bash
|
||||
# 检查服务状态
|
||||
sudo systemctl status mysql
|
||||
|
||||
# 检查数据库连接
|
||||
mysql -u webssh_user -p webssh
|
||||
```
|
||||
@@ -0,0 +1,41 @@
|
||||
# 功能特性
|
||||
|
||||
## ✅ 已实现功能
|
||||
|
||||
### 用户认证系统
|
||||
- 用户注册(邮箱+密码)
|
||||
- 用户登录(JWT令牌认证)
|
||||
- 密码加密存储(bcrypt)
|
||||
- 路由守卫和权限控制
|
||||
|
||||
### 服务器资产管理
|
||||
- 服务器增删改查
|
||||
- 支持密码和私钥认证
|
||||
- AES-256加密存储敏感信息
|
||||
- 服务器分组管理
|
||||
- 树形结构展示
|
||||
|
||||
### SSH终端核心功能
|
||||
- 基于xterm.js的Web终端
|
||||
- WebSocket实时通信
|
||||
- SSH2库后端连接
|
||||
- 终端窗口自适应
|
||||
- 命令输入和输出
|
||||
- 快捷键支持(Ctrl+C等)
|
||||
|
||||
### 前端界面
|
||||
- Vue3 + Element Plus现代化界面
|
||||
- 响应式设计
|
||||
- 服务器管理面板
|
||||
- 终端界面
|
||||
- 快速连接功能
|
||||
|
||||
## 🔄 待实现功能
|
||||
|
||||
- [ ] SFTP文件传输功能
|
||||
- [ ] 多标签页支持
|
||||
- [ ] 分屏显示
|
||||
- [ ] 终端外观定制
|
||||
- [ ] 快捷命令功能
|
||||
- [ ] 连接保持和自动重连
|
||||
- [ ] 操作日志记录
|
||||
Reference in new issue
Block a user