40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
# 2026-05-23 — 脚本/健康检查改 SSH,弱化 8601
|
||
|
||
## 摘要
|
||
|
||
远程脚本执行与手动健康检查改为经 **SSH(22)**;Agent 仅负责 **HTTPS 出站心跳(443)**。子机 Agent HTTP 默认只监听 `127.0.0.1:8601`,**不要求**公网放行 8601。
|
||
|
||
## 动机
|
||
|
||
大量宝塔子机未开放 8601;推送与文件已走 SSH。统一命令通道为 SSH,监控仍靠 Agent 心跳,减少防火墙与双通道维护成本。
|
||
|
||
## 涉及文件
|
||
|
||
- `server/application/services/script_service.py` — `_call_ssh_exec`,移除 Agent HTTP 执行路径
|
||
- `server/application/services/server_service.py` — `check_all_servers` 改 SSH 探测
|
||
- `server/infrastructure/ssh/remote_probe.py` — 新增 SSH 健康/指标探测
|
||
- `server/api/servers.py` — 健康检查 API 文档说明
|
||
- `web/agent/install.sh` — Python 3.12 venv、127.0.0.1 绑定、不再自动放行公网 8601
|
||
- `web/app/servers.html` — 安装说明文案
|
||
- `server/config.py` — 注释
|
||
|
||
## 端口模型(变更后)
|
||
|
||
| 方向 | 端口 | 用途 |
|
||
|------|------|------|
|
||
| 子机 → 中心 | 443 出站 | Agent 心跳、长任务 curl 回调 |
|
||
| 中心 → 子机 | 22 入站 | 推送、文件、脚本、手动健康检查 |
|
||
| 127.0.0.1:8601 | 仅本机 | Agent 进程(可选,不暴露公网) |
|
||
|
||
## 迁移 / 重启
|
||
|
||
- 需重启 Nexus 后端以加载 Python 变更
|
||
- 已装 Agent:建议重装或手动改 systemd 为 `127.0.0.1` + venv;**不必**再开公网 8601
|
||
- 确保各服务器 SSH 凭据可用(与推送相同)
|
||
|
||
## 验证
|
||
|
||
1. 子机 Agent 运行:`journalctl -u nexus-agent -f`,心跳 200
|
||
2. 未开公网 8601 时:脚本页执行命令应成功(`channel: ssh`)
|
||
3. `POST /api/servers/check` 返回 `channel: ssh` 且 `status: online`(SSH 可达时)
|