1Shell 不是"又一个 Web SSH 面板"。 它是一个零侵入式的多机管理中枢与 AI 自动化运维总台:
- 一端御万机,集中接管多台跨网机器
- 万机皆可连,内置中继级联,无缝穿透并管理无公网 IP 的云电脑与 NAS
- 一条 SSH 链路,复用终端、探针、文件浏览与 AI 协作
- 零侵入,目标机器不安装任何 Agent,保持 100% 出厂纯净
| 功能 | 描述 |
|---|---|
| 多机 SSH 终端 | 本地 Shell + 远端 SSH,支持跳板机级联,多标签页切换 |
| 轻量化 | 面板本身的占用内存只有不到80MB |
| Agentless 探针 | 零侵入,SSH 采集 CPU / 内存 / 磁盘 / 负载 / 网络,定时轮询 |
| SFTP 文件浏览 | 本地 + 远程双模式,目录导航,文件预览 |
| AI Chat | OpenAI 兼容 API 接入,流式对话,终端上下文感知 |
| Ghost Text | 终端输入时 AI 实时内联补全,Tab 采纳,低打扰 |
| AI 命令建议 | 自然语言描述需求,AI 生成可执行命令,一键注入终端 |
| AI 选区分析 | 框选终端输出,AI 自动解读错误并给出修复命令 |
| MCP Server | 标准 MCP 协议,让 claude-code 等 AI CLI 直接操控远端主机 |
| Bridge API | HTTP API 桥接 SSH 执行,适配任意 CLI 工具 |
| AI Agent 面板 | 侧边栏运行 claude-code / OpenCode / Codex |
| 网站任意门 | 每台主机关联多个业务入口,一键直达 |
| 审计日志 | 所有操作记录到 SQLite,可翻页查询,可追溯 |
| IP 访问控制 | 白名单 / 黑名单,CIDR 支持 |
| 登录保护 | HttpOnly Cookie + 暴力破解锁定 + 时序攻击防护 |
# 1. 克隆
git clone https://github.com/weidu12123/1shell.git
cd 1shell
# 2. 配置
cp .env.example .env
# 编辑 .env,设置登录密码和密钥
# 3. 启动
docker compose up -d
# 4. 访问
# http://localhost:3301 → 默认账号 admin / admin(请立即修改)git clone https://github.com/weidu12123/1shell.git
cd 1shell
npm install
cp .env.example .env
# 编辑 .env
npm startnpm run dev # nodemon 自动重启
npm test # 运行 46 个单元 / 集成测试复制 .env.example 后按需修改:
# ── 登录认证 ──────────────────────────────────
APP_LOGIN_USERNAME=admin
APP_LOGIN_PASSWORD=your-strong-password # 必改
# ── 会话加密(必填,用于 SSH 凭据加密存储)────
APP_SECRET=your-random-secret-64chars # 必填
# ── AI API(Web UI 内也可配置)────────────────
OPENAI_API_BASE=https://api.openai.com/v1
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o
# ── MCP / Bridge API 鉴权 ─────────────────────
BRIDGE_TOKEN=your-random-bridge-token # 启用 MCP 时必填
# ── 服务端口 ──────────────────────────────────
PORT=3301
# ── 反向代理受信任 IP(Nginx 等场景)─────────
# TRUSTED_PROXY_IPS=127.0.0.1安全提示:生产环境请务必修改
APP_LOGIN_PASSWORD和APP_SECRET,并通过 HTTPS 访问。
1Shell 内置 MCP Server,让 claude-code 等工具直接操控你的远端主机:
方式 A:Agent 面板一键接入
登录后点击顶栏 AI Agent → ⚡ 一键接入,自动完成配置。
方式 B:手动配置
// ~/.claude/mcp_settings.json
{
"mcpServers": {
"1shell": {
"url": "http://your-server:3301/mcp/sse",
"headers": { "X-Bridge-Token": "your-bridge-token" }
}
}
}可用 MCP 工具:
| 工具 | 说明 |
|---|---|
execute_ssh_command |
在指定主机执行命令,返回 stdout / stderr / exitCode |
list_hosts |
列出所有已配置主机 |
浏览器(xterm.js + Vanilla JS)
↕ HTTP + WebSocket(Socket.IO)
1Shell Server(Node.js + Express)
├── Auth Service Cookie Session + 暴力破解防护
├── Session Service node-pty(本地)/ ssh2(远端)
├── Probe Service SSH exec 零侵入采集
├── File Service fs(本地)/ SFTP(远端)
├── AI Service OpenAI 兼容流式 API
├── Bridge Service SSH exec 命令桥接
├── MCP Service MCP SSE + JSON-RPC 2.0
├── Agent Service PTY 启动 AI CLI 工具
├── Audit Service SQLite 审计日志
└── IP Filter 白名单 / 黑名单
| 层 | 技术 |
|---|---|
| 运行时 | Node.js ≥ 18 |
| Web 框架 | Express + Helmet |
| 实时通信 | Socket.IO |
| SSH | ssh2 + node-pty |
| 终端渲染 | xterm.js 5 |
| 数据库 | better-sqlite3(自动降级文件存储) |
| AI | OpenAI 兼容 API(任意兼容服务商) |
| 容器化 | Docker + docker-compose |
| CI | GitHub Actions(Node 18 / 20 / 22) |
1shell/
├── server.js # 入口:服务装配与启动
├── src/
│ ├── services/ # 业务逻辑层
│ │ ├── auth.service.js # 认证与会话
│ │ ├── session.service.js # SSH / PTY 会话
│ │ ├── host.service.js # 主机管理与连接
│ │ ├── probe.service.js # Agentless 探针
│ │ ├── file.service.js # 文件浏览
│ │ ├── ai.service.js # AI 补全与对话
│ │ ├── bridge.service.js # SSH exec 桥接
│ │ └── audit.service.js # 审计日志
│ ├── agents/ # AI CLI PTY 服务
│ ├── mcp/ # MCP 协议实现
│ ├── routes/ # HTTP 路由
│ ├── sockets/ # Socket.IO 事件
│ ├── middleware/ # 限流、错误处理
│ ├── repositories/ # 数据访问层
│ └── database/ # SQLite 管理
├── public/ # 前端(Vanilla JS)
│ ├── index.html # 主页面
│ ├── app.js # 模块装配
│ ├── session-terminal.js # 终端会话
│ ├── terminal-ai.js # Ghost Text
│ ├── ai-chat.js # AI 对话
│ ├── agent-panel.js # AI Agent 面板
│ ├── file-browser.js # 文件浏览器
│ └── layout.js # 布局与主题
├── lib/ # 工具库(加密、日志)
├── test/ # 46 个测试用例
├── Dockerfile
├── docker-compose.yml
└── .github/workflows/ci.yml # CI 流水线
- 凭据加密:AES-256-GCM + scrypt(随机盐),SSH 密码和私钥加密存储,不离开主控端
- 会话安全:HttpOnly Cookie + SameSite=Lax + CSRF 双 Token
- 防爆破:IP 维度失败计数 + 60s 锁定 +
timingSafeEqual防时序攻击 - API 安全:Helmet 安全头、CSP、AI 接口滑动窗口限流
- Bridge 鉴权:独立 Token,与 Web Session 完全隔离,
timingSafeEqual对比 - 文件安全:文件浏览 API 阻止访问应用自身敏感目录(
.env、data/) - IP 控制:可配置白名单 / 黑名单,CIDR 支持
- 代理感知:
TRUSTED_PROXY_IPS控制 X-Forwarded-For 信任范围,防 IP 伪造
- 自建多台 VPS,需要统一入口和巡检面板
- 不想在目标机器安装任何额外 Agent 或修改配置
- 希望把 SSH 终端、状态监控、文件管理和 AI 协作整合到一处
- 需要让 AI CLI 工具(claude-code 等)安全、可控地操控远端主机
- 前端 Vite 构建工具链
- TypeScript 迁移
- 文件上传 / 下载
- 主机组批量操作
- MCP 权限控制(限制 AI 只能操作指定主机)
- HTTPS / TLS 证书自动管理
- 国际化(i18n)
1Shell 2.0 已从单页 WebSSH 控制台升级为面向多主机运维场景的操作平台。
- 新增脚本库,支持创建、编辑、复制、删除脚本
- 支持标签、分类、参数模板与风险等级
- 支持 AI 一键生成脚本
- 新增 Playbook 多步骤编排与顺序执行能力
- 支持将脚本或 Playbook 直接注入当前终端执行
- 新增 Claude Code / Codex / OpenCode 三种 AI CLI 接入
- 支持多 Provider 配置与活跃渠道切换
- 新增 OpenAI / Anthropic 双向协议代理
- 通过独立沙箱目录与环境变量启动 CLI,不修改用户本地配置
- 自动注入 1Shell MCP,供 AI 直接调用远端 SSH 能力
- 新增独立审计页面,支持分页与多条件筛选
- 审计覆盖 Bridge API、MCP、SSH Session、脚本执行等链路
- 新增独立探针页面与带宽趋势图
- 展示关键进程摘要,便于快速查看主机运行状态
- 优化文件浏览器缓存与远程目录访问性能
- 优化 SFTP 连接池健康检测与本地 stat 并发
- 保留 1.x 终端交互基础,并补齐脚本注入等运维场景能力
- 当前版本升级为 2.0.0 正式版
- 2.0 对应定位为「脚本沉淀、编排执行、审计追踪、AI 接入」的一体化多机运维版本
MCP / SSH 稳定性:
改成持久化 SSH shell 连接池,避免每条命令都重新握手。 修复 MCP 经常超时的问题。 给 SSH 加了 keepalive,减少空闲断连。 执行超时策略做了调整,避免短超时误杀。
探针优化:
探针改为复用持久连接,不再频繁新建 SSH 连接。 探针轮询间隔从 15 秒调到 60 秒。 顶栏探针信息会跟随当前切换主机刷新,不再一直显示本机。
终端区体验:
加了终端全屏功能。 加了补全建议框关闭按钮。 左侧栏支持折叠,给终端腾更多空间。 调整了顶部按钮布局、AI 面板按钮样式和位置。
文件浏览器功能补全:
新增 下载文件。 新增 上传文件。 新增 文件预览,包括图片预览。 新增 文本文件编辑并保存。 上传时补上了 CSRF token,解决“CSRF 校验失败”。
文件浏览器性能优化:
后端加入 SFTP 连接池,减少频繁建连。 打开远程目录、读取文件明显更快。 版本发布
当前版本升级为 1.1.0 正式版。
MIT © 2026 weidu12123