46 lines
2.2 KiB
Markdown
46 lines
2.2 KiB
Markdown
# 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 中归档*
|