0

0

Linux怎么配置SSH心跳包_Linux防止远程连接自动断开【指南】

穿越時空

穿越時空

发布时间:2026-02-07 12:20:02

|

137人浏览过

|

来源于php中文网

原创

VSCode Remote-SSH 断连主因是客户端未配置 SSH 心跳,需同时设置 ServerAliveInterval 和 ServerAliveCountMax;服务端需配 ClientAliveInterval 与 ClientAliveCountMax;VSCode 应启用 useLocalServer 并检查日志确认配置生效。

linux怎么配置ssh心跳包_linux防止远程连接自动断开【指南】

客户端配置 SSH 心跳:ServerAliveIntervalServerAliveCountMax 必须配对用

VSCode Remote-SSH 断连,90% 是因为本地 SSH 客户端根本没发心跳包——不是服务器“不给活”,是你没告诉它“我还在线”。ServerAliveInterval 控制发送间隔(单位秒),ServerAliveCountMax 控制容忍丢包次数,两者缺一不可。

常见错误现象:

  • 改了 ServerAliveInterval 但没设 ServerAliveCountMax,结果一丢包立刻断开
  • 在命令行用 ssh -o ServerAliveInterval=60 user@host 临时连接,却忘了加 -o ServerAliveCountMax=3
  • 把配置写在 ~/.ssh/config 里,但 Host 别名写错了(比如用了 IP 而非 HostName),导致配置未生效

实操建议:

  • 编辑 ~/.ssh/config,添加通用规则:
    Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
  • 若只针对某台主机,用具体别名更安全:
    Host prod-server
    HostName 10.0.2.5
    User ops
    ServerAliveInterval 45
    ServerAliveCountMax 5
  • 参数差异:ServerAliveInterval 60 表示每分钟探一次;ServerAliveCountMax 3 意味着最多容忍 3 分钟无响应——超时后客户端主动断开,避免卡死

服务端配置 SSH 心跳:ClientAliveInterval 不等于客户端的“镜像”

服务端的 ClientAliveIntervalClientAliveCountMax 看似和客户端对称,但作用对象相反:它是服务器主动探测“你还在不在”,不是转发你的心跳。很多运维误以为只要客户端配了,服务端就不用动,结果中间防火墙或云厂商 NAT 网关照样掐断连接。

使用场景:

  • 你在阿里云/腾讯云上跑开发机,公网 IP 经过 SNAT,会话空闲 5–10 分钟就被回收
  • 公司内网有统一出口防火墙,默认 TCP 连接空闲超时为 300 秒

实操建议:

  • 编辑 /etc/ssh/sshd_config,取消注释并设置:
    ClientAliveInterval 300
    ClientAliveCountMax 2
    (即每 5 分钟探一次,两次失败后断开)
  • 不要盲目抄 “60+3”:服务端间隔太短(如 30 秒)会增加无效流量;太大(如 1800 秒)则起不到保活作用
  • ClientAliveInterval 仅对协议 v2 生效,且必须配合 TCPKeepAlive yes(默认已开启)才可靠
  • 改完务必执行 sudo systemctl restart sshd,否则配置不生效

VSCode Remote-SSH 插件的隐藏开关:remote.ssh.useLocalServer 影响隧道稳定性

VSCode Remote-SSH 不是直接复用你的终端 SSH 连接,而是启动一个独立的 SSH 隧道进程。这个进程如果被系统休眠、资源限制或插件自身 Bug 干扰,就会静默掉线——此时即使 SSH 配置全对,也救不了。

Pliny
Pliny

创建、分享和重新组合AI应用程序

下载

容易踩的坑:

  • 禁用 remote.ssh.useLocalServer(默认关闭),会让 VSCode 在远程机器上起一个代理服务,反而增加一层故障点
  • remote.ssh.pathTimeout 默认是 15000 毫秒,遇到高延迟网络(如跨国跳板机)会直接报 “Failed to connect before timeout”
  • Windows 用户用 WSL2 作为本地环境,却没在 WSL2 的 ~/.ssh/config 里配心跳,只配了 Windows 的,结果无效

实操建议:

  • 在 VSCode 设置中搜索 remote.ssh.useLocalServer,✅ 勾选启用(让隧道走本地 SSH 客户端逻辑)
  • remote.ssh.pathTimeout 改为 30000 或更高,避免路径解析阶段因网络抖动失败
  • 确认 VSCode 读的是哪个 ~/.ssh/config:打开 Remote-SSH 日志(Ctrl+Shift+P → “Remote-SSH: Show Log”),看它加载的配置路径

TCPKeepAlive 和加密心跳的区别:别让防火墙当“中间人”截断

很多人以为开了 TCPKeepAlive yes 就万事大吉,其实这是个底层 TCP 保活机制,数据包不加密、无认证,容易被企业级防火墙识别为“无效探测”而丢弃。而 ServerAliveInterval 发的是加密通道内的 SSH 协议心跳,防火墙无法干预。

性能与兼容性影响:

  • TCPKeepAlive 开销极低,但不可靠;ServerAliveInterval 有轻微加密开销,但穿透性强
  • 某些老旧嵌入式设备 SSH 实现不支持加密心跳,只能依赖 TCPKeepAlive,此时需和服务端 ClientAliveInterval 协同调优
  • 云服务器厂商(如 AWS EC2)明确建议优先使用 SSH 层心跳,而非 TCP 层

实操建议:

  • 客户端配置中保留 TCPKeepAlive yes 作为兜底,但不依赖它保活
  • 若发现日志里频繁出现 Write failed: Broken pipe,大概率是 TCP 层被掐断,此时要检查 ServerAliveInterval 是否生效,而不是调大 TCPKeepAlive 时间
  • 真正关键的,是客户端和服务端的两个“Alive”参数形成闭环:客户端发,服务端回;服务端探,客户端应

最常被忽略的一点:VSCode Remote-SSH 的日志里会明确打印出它实际使用的 SSH 命令行,包括所有 -o 参数。如果你改了 ~/.ssh/config 却没生效,第一反应不该是重装插件,而是打开日志,看它到底有没有读到你写的那几行。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

975

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1139

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

816

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

457

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2355

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

850

2023.08.10

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

1751

2023.08.28

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

1644

2023.08.30

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

67

2026.02.06

热门下载

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

精品课程

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

共48课时 | 8.7万人学习

Git 教程
Git 教程

共21课时 | 3.4万人学习

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

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