Files
webssh/README.md
T
2026-02-14 16:52:48 +08:00

201 lines
5.0 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.
# WebSSH - 在线SSH终端工具
一个基于Web的SSH终端工具,提供完整的Web版SSH客户端体验。
## ✨ 核心功能
- **用户认证**: 注册、登录、JWT令牌认证
- **服务器管理**: 服务器增删改查、分组管理
- **SSH终端**: 基于xterm.js的Web终端,支持密码和私钥认证
- **数据安全**: AES-256加密存储敏感信息
## 🚀 快速部署
### 📦 Docker 一键部署(推荐)
#### 方式一:使用官方镜像(推荐用于生产环境)
```bash
docker run -d \
--name webssh-app \
-p 3000:3000 \
-e DB_HOST=your-mysql-host \
-e DB_PORT=3306 \
-e DB_USER=webssh_user \
-e DB_PASSWORD=your-db-password \
-e DB_NAME=webssh \
-e JWT_SECRET=your-jwt-secret \
-e ENCRYPTION_KEY=your-32-byte-encryption-key \
dalaolala/webssh:latest
```
*导入初始化数据请查看 [install.sql](install.sql)*
**最后两个参数相关密钥生成方法:**
```bash
# 生成32字节JWT密钥(推荐使用强随机字符串)
openssl rand -base64 32
# 生成32字节加密密钥(必须正好32个字符)
openssl rand -hex 16 # 输出32字符的十六进制字符串
```
#### 方式二:完整部署脚本(包含MySQL)
```bash
# 一键部署(包含Docker环境检查、镜像构建、服务启动)
git clone https://github.com/dalaolala/webssh.git
cd webssh
chmod +x deploy.sh
./deploy.sh
# 部署完成后访问:http://localhost:3000
```
**部署特点:**
- 自动构建多阶段Docker镜像
- 包含MySQL数据库服务,使用 `install.sql` 进行数据库初始化
- 自动生成安全的加密密钥(JWT_SECRET和ENCRYPTION_KEY)
- 健康检查和服务监控
- 生产环境配置
### 🛠️ 手动部署
**环境要求:** Node.js 16+, MySQL 5.7+
```bash
# 1. 克隆项目
git clone https://github.com/dalaolala/webssh.git
cd webssh
# 2. 数据库初始化(使用install.sql脚本)
mysql -u root -p < install.sql
# 3. 安装依赖
npm install
# 4. 环境配置
cp backend/.env.example backend/.env
# 编辑 backend/.env 文件,配置数据库连接和密钥
# 5. 启动应用
npm run dev
# 6. 前后端分别启动
cd frontend
npm run dev:frontend
http://localhost:5173
cd backend
npm run dev:backend
http://localhost:3000
```
**重要说明:**
- 数据库初始化统一使用 `install.sql` 脚本
- `ENCRYPTION_KEY` 必须是正好32字节的字符串
- 生产环境请使用强密码生成器创建安全的密钥
生成符合要求的密钥:
```bash
# 生成32字节JWT密钥
openssl rand -base64 32
# 生成32字节加密密钥(必须正好32个字符)
openssl rand -hex 16
```
## 📁 项目结构
```
webssh/
├── 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)*
## 🔧 使用指南
### 首次使用
1. 访问 http://localhost:3000 注册账号
2. 登录后进入仪表板
3. 添加你的第一个SSH服务器
4. 点击服务器名称开始连接
### 服务器配置
- **名称**: 服务器显示名称
- **主机**: IP地址或域名
- **端口**: SSH端口(默认22)
- **用户名**: SSH登录用户名
- **认证方式**: 密码认证或私钥认证
- **分组**: 服务器分组(可选)
### 终端操作
- **连接**: 点击"连接"按钮建立SSH会话
- **命令输入**: 在底部输入框输入命令
- **快捷键**:
- `Ctrl+C`: 中断当前命令
- `Ctrl+D`: 退出会话
- `Ctrl+L`: 清屏
- **断开**: 点击"断开"按钮结束连接
### 快速连接
- 不保存服务器信息,直接输入连接参数
- 适合临时连接或测试使用
## 🐛 故障排除
### 常见问题
- **数据库连接失败**: 检查MySQL服务状态和用户权限
- **加密密钥错误**: 确保ENCRYPTION_KEY为32字节
- **端口冲突**: 检查3000和5173端口是否被占用
- **依赖安装失败**: 清除npm缓存后重新安装
**日志查看:**
```bash
# 后端日志
cd backend && npm run dev
# 前端日志
cd frontend && npm run dev
```
## 🤝 贡献指南
1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🙏 致谢
- [xterm.js](https://xtermjs.org/) - 强大的Web终端组件
- [ssh2](https://github.com/mscdex/ssh2) - Node.js SSH客户端库
- [Vue.js](https://vuejs.org/) - 渐进式JavaScript框架
- [Element Plus](https://element-plus.org/) - Vue3组件库
---
**注意**: 本项目仍在开发中,部分功能可能不完善。生产环境使用前请充分测试。