185 lines
4.8 KiB
Markdown
185 lines
4.8 KiB
Markdown
# 🚀 EasyShell
|
||
|
||
高颜值远程 Shell 管理终端 - 一款现代化的 SSH 连接管理工具
|
||
|
||

|
||

|
||

|
||

|
||
|
||
## ✨ 特性
|
||
|
||
- 🎨 **高颜值界面** - 现代化深色主题,精心设计的 UI/UX
|
||
- 🔐 **SSH 连接管理** - 支持密码和私钥认证方式
|
||
- 💾 **双模式存储** - 本地 SQLite + 远程 MySQL 同步
|
||
- 📝 **智能命令提示** - 内置常用命令,支持搜索和使用频率排序
|
||
- 🔄 **数据同步** - 自动建库建表,一键上传/下载数据
|
||
- 📑 **多标签终端** - 同时管理多个 SSH 会话
|
||
- ⌨️ **快捷键支持** - Ctrl+K 打开命令面板
|
||
|
||
## 📸 界面预览
|
||
|
||
应用采用深色主题设计,包含:
|
||
- 可折叠侧边栏(主机列表分组显示)
|
||
- 多标签终端区域
|
||
- 命令面板(Ctrl+K 快速调用)
|
||
- 主机管理弹窗
|
||
- 数据库连接设置
|
||
|
||
## 🛠️ 技术栈
|
||
|
||
- **Electron** - 跨平台桌面应用框架
|
||
- **React** - 用户界面库
|
||
- **TailwindCSS** - 原子化 CSS 框架
|
||
- **Framer Motion** - 动画库
|
||
- **XTerm.js** - 终端模拟器
|
||
- **SSH2** - SSH 连接库
|
||
- **better-sqlite3** - 本地数据库
|
||
- **mysql2** - MySQL 连接库
|
||
|
||
## 📦 安装
|
||
|
||
### 环境要求
|
||
|
||
- Node.js >= 18.0.0
|
||
- npm >= 9.0.0
|
||
- Python 3.x(用于编译原生模块)
|
||
- Visual Studio Build Tools(Windows)/ Xcode(macOS)
|
||
|
||
### 安装步骤
|
||
|
||
```bash
|
||
# 克隆项目
|
||
git clone https://github.com/your-username/easyshell.git
|
||
cd easyshell
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 重新编译原生模块(如果遇到问题)
|
||
npm rebuild better-sqlite3 --build-from-source
|
||
npm rebuild ssh2 --build-from-source
|
||
|
||
# 启动开发模式
|
||
npm start
|
||
```
|
||
|
||
### 构建发布版本
|
||
|
||
```bash
|
||
# 构建生产版本
|
||
npm run dist
|
||
```
|
||
|
||
## 🚀 使用说明
|
||
|
||
### 本地模式
|
||
|
||
应用默认使用本地 SQLite 数据库存储数据,无需任何配置即可使用。
|
||
|
||
### 远程同步模式
|
||
|
||
1. 点击左下角「本地模式」或设置图标
|
||
2. 输入 MySQL 服务器信息:
|
||
- 主机地址
|
||
- 端口(默认 3306)
|
||
- 用户名
|
||
- 密码
|
||
- 数据库名(默认 easyshell)
|
||
3. 点击「连接数据库」
|
||
4. 系统将自动创建数据库和所需的表结构
|
||
|
||
### 添加主机
|
||
|
||
1. 点击侧边栏的 ➕ 按钮或「添加主机」
|
||
2. 填写主机信息:
|
||
- 名称(显示名)
|
||
- 分组(用于分类)
|
||
- 主机地址
|
||
- 端口(默认 22)
|
||
- 用户名
|
||
- 密码或 SSH 私钥
|
||
3. 可选择标识颜色
|
||
4. 点击「测试连接」验证配置
|
||
5. 点击「添加主机」保存
|
||
|
||
### 命令提示
|
||
|
||
- 按 `Ctrl+K` 打开命令面板
|
||
- 搜索或浏览预设命令
|
||
- 使用方向键选择,回车执行
|
||
- 命令会直接发送到当前终端
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
easyshell/
|
||
├── main.js # Electron 主进程
|
||
├── preload.js # 预加载脚本(IPC 桥接)
|
||
├── package.json # 项目配置
|
||
├── tailwind.config.js # TailwindCSS 配置
|
||
├── public/
|
||
│ └── index.html # HTML 模板
|
||
└── src/
|
||
├── index.js # React 入口
|
||
├── index.css # 全局样式
|
||
├── App.js # 主应用组件
|
||
├── components/
|
||
│ ├── TitleBar.js # 标题栏
|
||
│ ├── Sidebar.js # 侧边栏
|
||
│ ├── Terminal.js # 终端组件
|
||
│ ├── HostManager.js # 主机管理
|
||
│ ├── Settings.js # 设置面板
|
||
│ └── CommandPalette.js # 命令面板
|
||
└── services/
|
||
├── database.js # 数据库服务
|
||
└── ssh.js # SSH 服务
|
||
```
|
||
|
||
## ⌨️ 快捷键
|
||
|
||
| 快捷键 | 功能 |
|
||
|--------|------|
|
||
| `Ctrl+K` | 打开命令面板 |
|
||
| `Esc` | 关闭弹窗 |
|
||
| `↑/↓` | 命令面板中导航 |
|
||
| `Enter` | 执行选中命令 |
|
||
|
||
## 🔧 数据库结构
|
||
|
||
### hosts 表(主机信息)
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | INT | 主键 |
|
||
| name | VARCHAR | 主机名称 |
|
||
| host | VARCHAR | 主机地址 |
|
||
| port | INT | SSH 端口 |
|
||
| username | VARCHAR | 用户名 |
|
||
| password | TEXT | 密码(加密存储建议) |
|
||
| private_key | TEXT | SSH 私钥 |
|
||
| group_name | VARCHAR | 分组名 |
|
||
| color | VARCHAR | 标识颜色 |
|
||
| description | TEXT | 备注 |
|
||
|
||
### commands 表(命令提示)
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | INT | 主键 |
|
||
| command | TEXT | 命令内容 |
|
||
| description | TEXT | 命令描述 |
|
||
| category | VARCHAR | 分类 |
|
||
| usage_count | INT | 使用次数 |
|
||
|
||
## 🤝 贡献
|
||
|
||
欢迎提交 Issue 和 Pull Request!
|
||
|
||
## 📄 许可证
|
||
|
||
MIT License
|
||
|
||
---
|
||
|
||
Made with ❤️ by EasyShell Team
|
||
|