0

0

sftp 频繁超时 的 TCP keepalive 与 ClientAliveInterval 配置

冰川箭仙

冰川箭仙

发布时间:2026-02-11 20:59:08

|

361人浏览过

|

来源于php中文网

原创

SFTP空闲断连根本原因是中间网络设备静默丢弃TCP空闲连接,需通过客户端TCP keepalive或ServerAliveInterval、服务端ClientAliveInterval协同保活。

sftp 频繁超时 的 tcp keepalive 与 clientaliveinterval 配置

为什么 SFTP 连接总在空闲几秒后就断开

根本原因不是 SFTP 协议本身,而是底层 TCP 连接被中间网络设备(如 NAT 网关、防火墙)静默丢弃。当客户端和服务器之间长时间没有数据包流动,这些设备会清理“空闲连接”,而 OpenSSH 默认不主动探测连接是否还活着。

关键区别:TCP keepalive 是内核级机制,作用于 socket 层;ClientAliveInterval 是 OpenSSH 服务端应用层心跳,只对 SSH 登录会话生效(包括 SFTP 子系统),但不覆盖所有连接场景。

  • TCP keepalive 需在客户端和服务端操作系统层面开启,影响所有 TCP 连接(含非 SSH)
  • ClientAliveInterval 必须配置在 /etc/ssh/sshd_config 中,且仅对由 sshd 派生的会话起作用
  • 如果用 sftp -o ConnectTimeout=5 user@host 这类命令直连,ClientAliveInterval 不生效——它不控制连接建立阶段,只管建立后的保活

Linux 客户端怎么设 TCP keepalive 参数

很多脚本或自动化工具(比如用 paramikolibssh2 封装的 SFTP 客户端)默认不启用 TCP keepalive,得手动打开并调参。内核默认值太保守:tcp_keepalive_time 是 7200 秒(2 小时),远超大多数企业 NAT 超时阈值(通常 30–300 秒)。

临时生效(当前会话):

echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time  
echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl  
echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes

永久生效需写入 /etc/sysctl.conf

net.ipv4.tcp_keepalive_time = 60  
net.ipv4.tcp_keepalive_intvl = 10  
net.ipv4.tcp_keepalive_probes = 3
  • 60 秒后开始探测,每 10 秒发一次 ACK 探测包,连续 3 次无响应才断开连接
  • 不要设 tcp_keepalive_time 小于 30:某些低端家用路由器会误判为扫描行为而限速
  • Java 的 JSch 和 Python 的 paramiko 可通过 set_keepalive(30) 单独设置 socket 级 keepalive,优先于系统全局值

sshd 怎么配 ClientAliveInterval 才真正管用

ClientAliveInterval 只在用户已成功登录、进入交互或子系统(如 SFTP)后才启动计时。它发的是 SSH 层的 SSH_MSG_GLOBAL_REQUEST,不是 TCP 包,所以能穿透只过滤 TCP 的设备,但会被深度检测 DPI 防火墙拦截。

必须同时配三项(缺一不可):

Colourlab.ai
Colourlab.ai

好莱坞内容创作者依赖的AI色彩分级软件

下载
  • ClientAliveInterval 30:每 30 秒向客户端发一次心跳请求
  • ClientAliveCountMax 3:连续 3 次没收到响应才关闭连接(即最多容忍 90 秒无响应)
  • TCPKeepAlive no:关掉系统级 TCP keepalive,避免和 SSH 层心跳冲突导致连接异常重置

配完记得 sudo systemctl reload sshd,别用 restart——否则正在传大文件的 SFTP 会话可能中断。

注意:ClientAliveIntervalsftp -b batchfile user@host 这种批处理模式无效,因为 OpenSSH 认为这是“非交互式会话”,默认跳过心跳逻辑。此时只能靠客户端侧 TCP keepalive 或改用 -o ServerAliveInterval=30(OpenSSH 客户端参数)。

OpenSSH 客户端侧的 ServerAliveInterval 更靠谱

如果你无法修改服务端配置(比如连的是第三方 SFTP 服务),ServerAliveInterval 是最直接有效的解法。它是 OpenSSH 客户端主动发起的保活机制,兼容所有服务端(哪怕对方禁用了 ClientAlive)。

用法分三种场景:

  • 命令行临时加: sftp -o ServerAliveInterval=25 -o ServerAliveCountMax=2 user@host
  • 写进 ~/.ssh/config
    Host example.com  
        HostName example.com  
        User sftpuser  
        ServerAliveInterval 25  
        ServerAliveCountMax 2
  • 脚本中用环境变量(适用于封装成工具链):export SSH_CLIENT_OPTIONS="-o ServerAliveInterval=25",再调用 sftp

数值建议:设 ServerAliveInterval 比你预估的网络设备超时时间小 5–10 秒。例如知道出口防火墙清空连接是 60 秒,那就设 50;设成 60 反而容易卡在临界点上断连。

真实坑点:某些老旧版本 OpenSSH(ServerAliveInterval,表现为传输中突然卡住不动。升级到 8.0+ 或换用 lftp sftp:// 可绕过。

keep
keep

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

下载

相关标签:

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

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

1480

2023.06.21

如何安装LINUX
如何安装LINUX

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

712

2023.06.29

linux find
linux find

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

298

2023.06.30

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

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

788

2023.07.05

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

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

581

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

559

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

302

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

391

2023.07.25

2026春节习俗大全
2026春节习俗大全

本专题整合了2026春节习俗大全,阅读专题下面的文章了解更多详细内容。

68

2026.02.11

热门下载

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

精品课程

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

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