0

0

sftp 连接慢或频繁超时 的 ClientAliveInterval 与 TCP keepalive 调整

舞姬之光

舞姬之光

发布时间:2026-01-22 17:46:03

|

952人浏览过

|

来源于php中文网

原创

SSH/SFTP连接慢或超时主因是中间设备清除空闲会话,需通过ClientAliveInterval(服务端)、ServerAliveInterval(客户端)和TCP keepalive(系统级)三层保活协同解决。

sftp 连接慢或频繁超时 的 clientaliveinterval 与 tcp keepalive 调整

SSH/SFTP 连接慢或频繁超时,往往不是网络本身卡顿,而是中间防火墙、NAT 设备或负载均衡器在连接空闲一段时间后主动清除了会话状态。这时靠客户端重连或反复尝试效果有限,真正有效的是让连接“保持活跃”——通过 ClientAliveInterval(服务端)和 TCP keepalive(客户端或系统级)协同维持连接心跳。

Server 端:启用并调低 ClientAliveInterval

这是 OpenSSH 服务端控制 SSH 连接保活的核心参数。它会让服务器定期向客户端发送探测包,若客户端无响应则断开连接,避免僵死连接堆积,同时也防止中间设备因长期无数据而丢弃连接。

  • 配置位置:修改 /etc/ssh/sshd_config
  • 关键参数
    • ClientAliveInterval 30:每 30 秒发一次探测(建议设为 30–60,太短增加无效流量,太长仍可能被中间设备切断)
    • ClientAliveCountMax 3:连续 3 次探测无响应才断开(即最多容忍约 90–180 秒无响应)
    • TCPKeepAlive yes(可选但建议开启,与下文系统级 TCP keepalive 协同)
  • 生效方式:修改后执行 sudo systemctl reload sshd(或 sudo service ssh reload

Client 端:配置 ServerAliveInterval 避免被动等待

如果无法修改服务端配置(如连接第三方 SFTP 服务器),可在客户端强制发起保活探测。OpenSSH 客户端对应参数是 ServerAliveInterval,作用类似但方向相反——由客户端主动“打招呼”,更适用于 NAT 环境或客户端出口受限场景。

音记AI
音记AI

音视频秒转文字,声波流式转录,让每个声音都成篇章

下载
  • 临时使用sftp -o ServerAliveInterval=45 -o ServerAliveCountMax=2 user@host
  • 全局配置:在 ~/.ssh/config 中添加:
    Host example.com
    ServerAliveInterval 45
    ServerAliveCountMax 2
  • 注意:该设置对所有基于 OpenSSH 的连接(sftp/scp/ssh)生效;值略小于服务端 ClientAliveInterval 更稳妥(例如服务端设 60,客户端设 45),避免双方探测错位导致误断。

系统级:调整 TCP keepalive 参数(Linux/macOS)

当 SSH 层保活未覆盖到(比如进程卡住、信号阻塞),底层 TCP keepalive 可作为兜底机制。它由内核控制,影响所有 TCP 连接,包括 SSH。

  • Linux 查看当前值sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
  • 常见默认值:time=7200s(2小时)、intvl=75s、probes=9 → 实际检测延迟高达 2h+11min,远超多数防火墙超时阈值(通常 300–1800s)
  • 推荐临时调整(root)
    sudo sysctl -w net.ipv4.tcp_keepalive_time=600
    sudo sysctl -w net.ipv4.tcp_keepalive_intvl=30
    sudo sysctl -w net.ipv4.tcp_keepalive_probes=3
    即:空闲 10 分钟后开始探测,每 30 秒一次,失败 3 次断连(总容忍约 11.5 分钟)
  • 永久生效:写入 /etc/sysctl.conf/etc/sysctl.d/99-keepalive.conf

验证与排查小技巧

调整后别急着测试上传,先确认保活是否真正触发:

  • 抓包确认:用 tcpdump -i any port 22 -nn 观察是否有周期性 ACK 包(ClientAlive/ServerAlive 探测体现为带 ACK 标志的空数据包)
  • 服务端日志:开启 LogLevel VERBOSE 后,/var/log/auth.log 中会出现 Received client alive messageTimeout, server not responding 记录
  • 客户端调试:加 -v 参数运行 sftp,看到 debug1: Sending SSH2_MSG_GLOBAL_REQUEST kex-strict-c-v00@openssh.com 类似日志说明保活已激活
  • 避开干扰:确保客户端和服务器时间同步(NTP),避免因系统时间跳变导致 keepalive 时间计算异常

相关文章

keep
keep

Keep是一款健身安排,无论是想减肥塑形或增肌,还是寻找健身跑步瑜伽计步等训练计划,你可以随时随地选择课程进行训练!权威教练视频教学,健身干货自由分享!有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

393

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

573

2023.08.10

macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

336

2025.05.09

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1352

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

573

2023.07.06

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.6万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号