@lzm04521/ssh-mcp-server 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +157 -0
  3. package/admin-web/dist/assets/index-DXbr5DVR.js +494 -0
  4. package/admin-web/dist/index.html +6 -0
  5. package/admin-web/dist/logo.png +0 -0
  6. package/build/cli/command-line-parser.js +715 -0
  7. package/build/cli/command-line-parser.js.map +1 -0
  8. package/build/cli/run-mode.js +44 -0
  9. package/build/cli/run-mode.js.map +1 -0
  10. package/build/cli/stdio-proxy.js +304 -0
  11. package/build/cli/stdio-proxy.js.map +1 -0
  12. package/build/config/index.js +5 -0
  13. package/build/config/index.js.map +1 -0
  14. package/build/config/server.js +16 -0
  15. package/build/config/server.js.map +1 -0
  16. package/build/core/mcp-http-server.js +14 -0
  17. package/build/core/mcp-http-server.js.map +1 -0
  18. package/build/core/mcp-server.js +95 -0
  19. package/build/core/mcp-server.js.map +1 -0
  20. package/build/index.js +98 -0
  21. package/build/index.js.map +1 -0
  22. package/build/models/admin-types.js +135 -0
  23. package/build/models/admin-types.js.map +1 -0
  24. package/build/models/types.js +2 -0
  25. package/build/models/types.js.map +1 -0
  26. package/build/server/index.js +128 -0
  27. package/build/server/index.js.map +1 -0
  28. package/build/server/routes/admin.js +929 -0
  29. package/build/server/routes/admin.js.map +1 -0
  30. package/build/server/routes/audit.js +9 -0
  31. package/build/server/routes/audit.js.map +1 -0
  32. package/build/server/routes/backups.js +11 -0
  33. package/build/server/routes/backups.js.map +1 -0
  34. package/build/server/routes/mcp.js +52 -0
  35. package/build/server/routes/mcp.js.map +1 -0
  36. package/build/server/routes/settings.js +49 -0
  37. package/build/server/routes/settings.js.map +1 -0
  38. package/build/server/routes/system.js +147 -0
  39. package/build/server/routes/system.js.map +1 -0
  40. package/build/services/audit-store.js +123 -0
  41. package/build/services/audit-store.js.map +1 -0
  42. package/build/services/autostart-service.js +55 -0
  43. package/build/services/autostart-service.js.map +1 -0
  44. package/build/services/backup-scheduler.js +90 -0
  45. package/build/services/backup-scheduler.js.map +1 -0
  46. package/build/services/backup-service.js +113 -0
  47. package/build/services/backup-service.js.map +1 -0
  48. package/build/services/config-store.js +163 -0
  49. package/build/services/config-store.js.map +1 -0
  50. package/build/services/defaults.js +35 -0
  51. package/build/services/defaults.js.map +1 -0
  52. package/build/services/restart-helper.js +43 -0
  53. package/build/services/restart-helper.js.map +1 -0
  54. package/build/services/ssh-connection-manager.js +1775 -0
  55. package/build/services/ssh-connection-manager.js.map +1 -0
  56. package/build/services/update-service.js +93 -0
  57. package/build/services/update-service.js.map +1 -0
  58. package/build/tools/download.js +41 -0
  59. package/build/tools/download.js.map +1 -0
  60. package/build/tools/execute-command.js +53 -0
  61. package/build/tools/execute-command.js.map +1 -0
  62. package/build/tools/index.js +17 -0
  63. package/build/tools/index.js.map +1 -0
  64. package/build/tools/list-directory.js +57 -0
  65. package/build/tools/list-directory.js.map +1 -0
  66. package/build/tools/list-servers.js +51 -0
  67. package/build/tools/list-servers.js.map +1 -0
  68. package/build/tools/upload.js +41 -0
  69. package/build/tools/upload.js.map +1 -0
  70. package/build/utils/logger.js +28 -0
  71. package/build/utils/logger.js.map +1 -0
  72. package/build/utils/ssh-config-parser.js +195 -0
  73. package/build/utils/ssh-config-parser.js.map +1 -0
  74. package/build/utils/status-collector.js +226 -0
  75. package/build/utils/status-collector.js.map +1 -0
  76. package/build/utils/tool-error.js +20 -0
  77. package/build/utils/tool-error.js.map +1 -0
  78. package/package.json +69 -0
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2025 SIE Operations and Maintenance Team
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,157 @@
1
+ <div align="center">
2
+
3
+ <img src="images/logo.png" alt="ssh-mcp-server logo" width="160">
4
+
5
+ # SSH MCP Server
6
+
7
+ **让 AI 客户端安全地操作你的服务器 —— 基于 SSH 的 MCP 服务器**
8
+
9
+ 通过标准化 MCP 工具在远端执行命令与传输文件,内置 Web 管理台。
10
+
11
+ [![npm](https://img.shields.io/npm/v/@lzm04521/ssh-mcp-server)](https://www.npmjs.com/package/@lzm04521/ssh-mcp-server)
12
+
13
+ </div>
14
+
15
+ ## 它能做什么
16
+
17
+ 把 Claude Code、Cursor 等支持 MCP 协议的 AI 客户端连到你的 SSH 服务器上,AI 就可以:
18
+
19
+ - ⚙️ **执行命令** —— 远程运维、日志排查、服务管理
20
+ - 📤 **上传 / 📥 下载文件** —— 配置分发、日志拉取、大文件断点续传
21
+ - 🖥️ **多机管理** —— 项目 → 环境 → 主机三级树,一次配置处处可用
22
+
23
+ 多种使用形态,按需选择:
24
+
25
+ | 形态 | 适合场景 |
26
+ |------|---------|
27
+ | **npx 一键使用**(推荐) | 一行配置接入任意 MCP 客户端,自动带起常驻服务与 Web 管理台 |
28
+ | **纯 stdio / 全局安装** | 不需要管理台的极简场景,SSH 参数直连 |
29
+
30
+ ## ✨ 核心特性
31
+
32
+ ### 连接能力
33
+
34
+ - 🔐 多种认证:密码 / 私钥(含加密私钥)/ SSH Agent / 键盘交互式 **2FA**
35
+ - 🔗 SOCKS5 与 HTTP(S) 代理,穿透跳板网络
36
+ - 🚄 双传输模式:
37
+ - `exec` —— 每命令一通道,标准 Linux 主机
38
+ - `shell` —— 持久会话 + 标记协议,适配**堡垒机 / 跳板机**
39
+ - ⏱️ 连接 / 命令 / SFTP 三级超时独立可控;大文件走 fastPut/fastGet 分片并发
40
+
41
+ ### 安全策略
42
+
43
+ - 命令白名单 / 黑名单(正则),主机级与全局级双层过滤
44
+ - 本地与远端路径白名单,约束文件传输范围
45
+ - 全量审计日志:命令、输出、传输记录可追溯
46
+
47
+ ### Web 管理台
48
+
49
+ - 项目-环境-主机三级可视化管理,连接拖拽排序
50
+ - 测试连接、JSON 批量导入导出、`~/.ssh/config` 自动复用
51
+ - 定时备份快照与一键恢复;MCP 客户端(Claude Code 等)一键注册
52
+ - 开机自启动:Windows 登录后常驻服务自动就绪(设置页一键开关)
53
+ - 在线更新:对照 npm registry 自动检测并升级新版本
54
+ - 明暗双主题,跟随系统切换
55
+
56
+ ## 📸 界面一览
57
+
58
+ **连接管理** —— 三级树管理全部主机:
59
+
60
+ <div align="center"><img src="docs/screenshots/connections.png" alt="连接管理界面" width="820"></div>
61
+
62
+ ## 🚀 快速开始
63
+
64
+ ### 方式一:npx 一键使用(推荐)
65
+
66
+ MCP 客户端 JSON 配置(Claude Code、Cursor 等通用):
67
+
68
+ ```json
69
+ {
70
+ "mcpServers": {
71
+ "ssh-server": {
72
+ "command": "npx",
73
+ "args": ["-y", "@lzm04521/ssh-mcp-server@latest"]
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ 也可命令行注册:
80
+
81
+ ```bash
82
+ claude mcp add ssh-server -- npx -y @lzm04521/ssh-mcp-server@latest
83
+ ```
84
+
85
+ 首次调用会自动拉起常驻服务,之后:
86
+
87
+ - 🖥️ **Web 管理台**:浏览器打开 `http://127.0.0.1:61823/admin/`,可视化维护项目 → 环境 → 主机,保存即时生效,无需重启 MCP 会话
88
+ - 🔁 **常驻复用**:MCP 客户端经 stdio 自动转发到常驻服务;客户端退出后服务继续驻留,下次会话秒级复用
89
+ - 🔌 **自定义端口**:在 args 中加 `--admin-port <port>`(默认 61823)
90
+
91
+ ### 方式二:高级用法(全局安装 / 纯 stdio)
92
+
93
+ 配置中出现 SSH 参数或 `--config-file` 时自动回到传统 stdio 模式(不拉经常驻服务):
94
+
95
+ ```json
96
+ {
97
+ "mcpServers": {
98
+ "ssh-server": {
99
+ "command": "npx",
100
+ "args": ["-y", "@lzm04521/ssh-mcp-server@latest", "--host", "your.server.com", "--username", "root", "--password", "YOUR_PWD"]
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
106
+ 也可全局安装后直接使用二进制,两种形态任选:
107
+
108
+ ```bash
109
+ npm install -g @lzm04521/ssh-mcp-server
110
+ ```
111
+
112
+ - **常驻服务形态(持久使用推荐)**:`claude mcp add ssh-server -- ssh-mcp-server`。无参数运行自动拉起/复用常驻服务,全局安装路径稳定(升级不换路径,优于 npx 缓存)。在管理台「设置 → 服务」开启**开机自启动**后,登录 Windows 常驻服务自动就绪,管理台与 MCP 通道随开随用
113
+ - **纯 stdio 直连**:`claude mcp add ssh-server -- ssh-mcp-server --host your.server.com --username root --password YOUR_PWD`,不拉起常驻服务
114
+
115
+ 其他开关:手动启动常驻管理台 `--admin`;强制传统 stdio `--stdio`。配置文件与多连接模式详见 [`docs/migration.md`](docs/migration.md) 与 CLI 帮助(`--help`)。
116
+
117
+ ### 方式三:源码构建
118
+
119
+ ```bash
120
+ git clone https://github.com/lzm04521/ssh-mcp-server.git
121
+ cd ssh-mcp-server && npm install
122
+
123
+ npm run build # 构建 Node 版
124
+ npm test # 运行测试
125
+ npm --prefix admin-web install && npm --prefix admin-web run build # 构建管理台前端
126
+ ```
127
+
128
+ ## 🧰 MCP 工具一览
129
+
130
+ | 工具 | 说明 |
131
+ |------|------|
132
+ | `execute-command` | 远程执行命令,支持目录切换、超时与输出限制,受白/黑名单约束 |
133
+ | `upload` / `download` | SFTP 文件传输,大文件分片并发,路径白名单校验 |
134
+ | `list-servers` | 列出所有可用连接 |
135
+
136
+ ## 🏗️ 架构
137
+
138
+ ```
139
+ ┌─ 常驻服务(npx 自动拉起 / 全局安装无参数运行 / --admin 手动启动)──┐
140
+ │ │
141
+ │ SSH 连接池 ── MCP StreamableHTTP (/mcp) │
142
+ │ │ │
143
+ │ Admin API (/admin/api/*) ── 内嵌静态站点 (/admin/) │
144
+ │ │
145
+ └── MCP 客户端经 stdio proxy 转发接入;浏览器直达管理页 ────────────┘
146
+ ```
147
+
148
+ 关键模块:`src/services/ssh-connection-manager.ts`(SSH 核心)、`src/server/`(Fastify Admin 服务)、`admin-web/`(React 管理台)。
149
+
150
+ ## 📋 更多文档
151
+
152
+ - [使用迁移指南](docs/migration.md) —— 各客户端接入配置
153
+ - [更新日志](CHANGELOG.md)
154
+
155
+ ## 📄 许可证
156
+
157
+ [ISC](LICENSE) © lzm04521 (fork of [SIE-Operations-and-Maintenance-Team/ssh-mcp-server](https://github.com/SIE-Operations-and-Maintenance-Team/ssh-mcp-server))