更换网络交换机后scp无报错卡住,移动终端到其他显示器才恢复怎么解决
问题排查思路
- 先校验新交换机的网络配置:重点检查TCP段卸载(TSO/GSO/LRO)、链路MTU值、TCP超时/保活参数,以及是否开启了针对SSH协议的深度包检测(DPI)、流量整形规则。你遇到的传输卡在SSH重协商阶段且无流量的情况,大概率是交换机对SSH密钥重协商小包处理存在bug,或链路MTU不匹配引发PMTU黑洞导致。
- 排除终端TTY绑定干扰:你提到移动终端到另一台显示器就恢复传输,首先需确认脚本是否直接绑定在图形界面终端前台运行,终端进入休眠/省电模式时会暂停前台进程的I/O调度,显示器移动唤醒终端后进程恢复运行。可以先将脚本脱离终端后台运行,验证是否还会卡住。
- 排查SSH协议兼容性问题:日志显示卡住时正处于SSH自动密钥重协商阶段,Ubuntu 18.04自带的OpenSSH版本传输大文件时会频繁触发重协商,和部分新交换机的流量检测规则存在兼容性问题。
可行解决方案
- 优先验证临时规避方案:
- 修改SSH客户端配置,关闭自动密钥重协商:在scp命令中添加
-o RekeyLimit=none -o TCPKeepAlive=yes参数,也可以直接修改全局/etc/ssh/ssh_config添加对应配置永久生效。 - 替换scp为rsync走SSH协议传输,rsync自带断点续传和更稳定的传输控制,适配大文件备份场景,命令示例:
/usr/bin/trickle -s -d 30720 -u 30720 -t 10 -l 100 /usr/bin/rsync -avzP root@$MARIADB_REMOTE_HOST:$MARIADB_REMOTE_HOME/ $MARIADB_DATA_DIR/ - 将脚本通过crontab或systemd timer配置定时运行,完全脱离图形终端绑定,避免终端休眠引发进程暂停。
- 修改SSH客户端配置,关闭自动密钥重协商:在scp命令中添加
- 根因修复方案:
- 关闭新交换机上针对SSH协议的深度包检测、应用识别规则,升级交换机固件到最新稳定版,修复已知的SSH流量处理bug。
- 统一校验服务器、交换机整条链路的MTU值,保持全链路配置一致(默认1500,若开巨型帧则全链路统一配置9000),关闭两端服务器不必要的TCP卸载功能:
ethtool -K 网卡名 tso off gso off lro off。
内容的提问来源于stack exchange,提问作者RoohAllah Godazgar
相关产品推荐
相关产品推荐

