现象
KEX 问题修好后,SSH 能正常登录。但一跑 htop、top、vim 全屏刷新 就出问题:
- 前几行正常显示
- 然后画面停住,不再更新
- 简单
echo、ls没问题 - 输出一密集就卡
原因
SSH 走 嵌套连接(ProxyJump / ProxyCommand)时,流量路径是:
本机 SSH 加密通道 → stdio-forward 转发 → 目标机 SSH两层加密叠在一起。TUI 程序(htop 等)会 高频发送大量终端 escape 序列,stdio-forward 通道缓冲区小,来不及消化就 背压阻塞——表现就是画面刷几行后卡住。
跟 KEX 算法、密钥、sshd 无关,是 连接建立之后 的数据通道问题。
解决方案
1. 开压缩(首选,改 config 即可)
Host *
Compression yes
IPQoS throughput
ServerAliveInterval 30
ServerAliveCountMax 3重复性终端输出压缩率高,嵌套 SSH 下效果明显。实测 50 行宽输出从 卡死 → 2~4 秒跑完。
2. 减少嵌套层数
能直连就直连,必须中转时尽量 只跳一层。每多一层 SSH,TUI 吞吐掉一半。
3. 交互类程序用 mosh
mosh user@hostUDP 协议,专为高延迟/高丢包/频繁刷新的终端设计,比 SSH 跑 htop/vim 稳得多。
4. 远端开 tmux 再跑
ssh host
tmux
htop全屏刷新发生在 tmux 内部,跨 SSH 的 escape 序列量大幅减少。
怎么判断是不是这个问题
# 小数据量:正常
ssh host 'for i in $(seq 1 20); do echo ok-$i; done'
# 大数据量:卡住
ssh host 'for i in $(seq 1 50); do echo $(printf %.0sA {1..120}); done'前者秒回,后者卡住 → 就是通道吞吐问题,加 Compression yes 再试。
