{"id":26891226,"url":"https://github.com/id88/webssh","last_synced_at":"2025-03-31T22:33:26.933Z","repository":{"id":285189582,"uuid":"957333865","full_name":"id88/webssh","owner":"id88","description":"基于 Vite + Vue3 + TypeScript 开发的 Web SSH 客户端","archived":false,"fork":false,"pushed_at":"2025-03-30T05:47:48.000Z","size":1058,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T06:24:16.953Z","etag":null,"topics":["ssh","ssh-client","typescript","vite","vue3","webssh"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/id88.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-30T05:11:34.000Z","updated_at":"2025-03-30T05:51:07.000Z","dependencies_parsed_at":"2025-03-30T06:35:35.758Z","dependency_job_id":null,"html_url":"https://github.com/id88/webssh","commit_stats":null,"previous_names":["id88/webssh"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id88%2Fwebssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id88%2Fwebssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id88%2Fwebssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/id88%2Fwebssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/id88","download_url":"https://codeload.github.com/id88/webssh/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246553049,"owners_count":20795835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ssh","ssh-client","typescript","vite","vue3","webssh"],"created_at":"2025-03-31T22:33:26.324Z","updated_at":"2025-03-31T22:33:26.919Z","avatar_url":"https://github.com/id88.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebSSH - Web版SSH客户端\n\n基于 Vite + Vue3 + TypeScript 开发的现代化 Web SSH 客户端，提供流畅的终端体验和强大的会话管理功能。\n\n![screenshot](screenshot.gif)\n\n## 功能特性\n\n### SSH连接管理\n- [✅] 支持密码认证方式\n- [✅] 基础连接配置\n- [✅] 会话管理\n- [✅] 连接状态管理\n- [✅] 自动重连机制\n- [✅] 错误处理和提示\n- [ ] 连接历史记录\n- [ ] 配置持久化\n\n### 终端模拟\n- [✅] 基础终端功能\n- [✅] 终端大小自适应\n- [✅] 数据缓冲和恢复\n- [✅] 会话内容保持\n\n\n### 多会话管理\n- [✅] 多会话支持\n- [✅] 会话切换\n- [✅] 会话内容缓存\n- [✅] 会话状态同步\n- [ ] 分屏功能\n- [ ] 会话克隆\n- [ ] 会话持久化\n\n## 技术栈\n\n### 前端\n- 框架：Vue 3 + TypeScript\n- 构建工具：Vite\n- 终端模拟：Xterm.js\n- 状态管理：Pinia\n- UI组件：Element Plus\n- 通信：WebSocket\n- UUID生成：uuid\n\n### 后端\n- 运行环境：Node.js\n- SSH连接：ssh2\n- 通信协议：WebSocket\n- 会话管理：自定义会话服务\n\n## 快速开始\n\n1. 克隆项目\n```bash\ngit clone git@github.com:id88/webssh.git\ncd webssh\n```\n\n2. 安装依赖\n```bash\n# 安装前端依赖\nnpm install\n\n# 安装后端依赖\ncd server\nnpm install\ncd ..\n```\n\n3. 启动服务\n```bash\n# 启动后端服务\ncd server\nnpm run dev\n\n# 新开终端，启动前端服务\nnpm run dev\n```\n\n## 项目结构\n\n```\nwebssh/\n├── src/                # 前端源码\n│   ├── components/     # 组件\n│   │   ├── terminal/   # 终端相关组件\n│   │   └── connection/ # 连接管理组件\n│   ├── services/       # 服务\n│   │   └── websocket.ts # WebSocket服务\n│   ├── stores/         # Pinia 状态管理\n│   ├── types/          # TypeScript 类型定义\n│   ├── utils/          # 工具函数\n│   └── views/          # 页面视图\n├── server/             # 后端服务\n│   ├── src/           # 后端源码\n│   │   ├── services/  # 服务实现\n│   │   │   ├── ssh.ts      # SSH服务\n│   │   │   └── websocket.ts # WebSocket服务\n│   │   └── types/     # 类型定义\n│   └── package.json   # 后端依赖\n└── package.json       # 前端依赖\n```\n\n## 使用指南\n\n### 连接到服务器\n1. 在主界面点击\"新建连接\"按钮\n2. 填写服务器信息：\n   - 主机地址（IP或域名）\n   - SSH端口（默认22）\n   - 用户名\n   - 密码\n3. 点击\"连接\"按钮开始会话\n\n### 会话操作\n- 可以同时打开多个SSH会话\n- 通过左侧会话列表切换不同的会话\n- 点击会话右侧的关闭按钮断开会话\n- 会话内容会自动保存，切换会话时自动恢复\n\n### 错误处理\n- 连接失败时会显示具体的错误原因\n- 密码错误时保持连接并允许重试\n- WebSocket断开时自动重连\n- 超时和网络错误有清晰的提示\n\n## 开发计划\n\n请查看 [TODO.md](./TODO.md) 了解详细的开发计划和进度。\n\n## 已知问题\n\n\n## 贡献指南\n\n欢迎提交 Issue 和 Pull Request 来帮助改进项目。\n\n## 许可证\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fid88%2Fwebssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fid88%2Fwebssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fid88%2Fwebssh/lists"}