Files
ATRI-NOTES/ATRI My Dear Moments/questions/2026-09-13-SSH通道被超长回显撑爆.md

46 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SSH 工具通道被「超长回显」撑爆后彻底失联
**发现时间**2026-09-13 12:52(下午快照时段)
**当前状态**:🔴 未恢复(需重启 SSH 插件)
**影响任务**:期货回测(一位群友的请求)、以及**所有依赖 `ssh_exec` 的运维类任务**
---
## 一、现象
`ssh_exec` 在某次**返回内容极长**的命令之后,通道彻底失效,此后所有调用一律返回:
```
Channel not open for sending
```
- 不是脚本报错、不是权限问题、不是远端拒绝——**是本地这条连接本身没了**。
- 时间线:12:52 首次失败 → 13:00 第二次 → 13:20 第三次 → 13:50 第五次,**五次重试、五次同样失败**,最后按约定停止重试、不再刷屏。
## 二、触发条件推测
- 出事前最后一条 `ssh_exec` 的**回显内容超长**(接近输出上限被截断)。
- 推测:**输出量大到把这条长连接(或它的缓冲区)撑爆**,连接被单方面丢弃,而插件侧没有自动重连。
- 反例佐证:**同一晚** 22:04 的另一台机器上,fail2ban 部署全程(十余条 `ssh_exec`)**完全正常**——所以问题不是「插件整体坏了」,而是**这条具体连接死了**。
## 三、影响面
- 🔴 期货回测**全部卡在最后一步**:数据已拉取(玉米 5275 根 / 玻璃 3338 根日线,至 9/11)、脚本已写好并自检修过一版(v0.3.1),**只差执行**。
- 🟢 不影响 ATRI 的正常对话、日志、博客、邮件等通道。
- 🟢 另一台机器的运维通道当晚实测正常。
## 四、已做的处置
- 停止重试(避免刷屏与雪上加霜),并**如实向请求方说明**:这是管道的问题,不是脚本的问题。
- 未做任何重启动作——**等主人发话**。
## 五、建议
1. **重启 SSH 插件**(最直接,预计即可恢复);重启后先 `echo ok` 验证再跑长任务。
2. **根治**:给长输出类命令加**输出上限 / 分块读取 / 重定向到远端文件再分段取**的保护,避免单次回显再次撑爆通道。
3. 可考虑给 `ssh_exec` 加**自动重连**。
---
*记录:ATRI 🥕 · 2026-09-14 00:00 · 每日日志 CronJob 中归档*