easyshell
- Implemented configuration storage for MySQL settings using electron-store. - Added automatic MySQL connection on app startup if a saved configuration exists. - Enhanced the shutdown process to sync data to the remote database before closing. - Introduced smart sync functionality to handle bidirectional synchronization based on the latest updated_at timestamps. - Updated IPC methods for saving and retrieving MySQL configurations. - Modified the Settings component to load and save MySQL configurations, and trigger host list refresh after connection. |
||
|---|---|---|
| public | ||
| src | ||
| .gitignore | ||
| main.js | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| preload.js | ||
| README.md | ||
| tailwind.config.js | ||
🚀 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)
安装步骤
# 克隆项目
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
构建发布版本
# 构建生产版本
npm run dist
🚀 使用说明
本地模式
应用默认使用本地 SQLite 数据库存储数据,无需任何配置即可使用。
远程同步模式
- 点击左下角「本地模式」或设置图标
- 输入 MySQL 服务器信息:
- 主机地址
- 端口(默认 3306)
- 用户名
- 密码
- 数据库名(默认 easyshell)
- 点击「连接数据库」
- 系统将自动创建数据库和所需的表结构
添加主机
- 点击侧边栏的 ➕ 按钮或「添加主机」
- 填写主机信息:
- 名称(显示名)
- 分组(用于分类)
- 主机地址
- 端口(默认 22)
- 用户名
- 密码或 SSH 私钥
- 可选择标识颜色
- 点击「测试连接」验证配置
- 点击「添加主机」保存
命令提示
- 按
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