Jenkins Git 克隆失败深度解析:从 “Connection reset by peer“ 到彻底解决

个人名片

🎓作者简介:java领域优质创作者
🌐个人主页:码农阿豪
📞工作室:新空间代码工作室(提供各种软件服务)
💌个人邮箱:[2435024119@qq.com]
📱个人微信:15279484656
🌐个人导航网站:www.forff.top
💡座右铭:总有人要赢。为什么不能是我呢?

  • 专栏导航:

码农阿豪系列专栏导航
面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️
Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻
Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡
全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀

目录

  • Jenkins Git 克隆失败深度解析:从 "Connection reset by peer" 到彻底解决
    • 引言:持续集成的脆弱环节
    • 错误场景再现与初步分析
      • 日志片段解读
      • 错误含义深度解析
    • 根本原因的多维度分析
      • 1. SSH 密钥生态系统故障
      • 2. 网络层的隐蔽问题
      • 3. GitLab 服务器的限制和保护机制
      • 4. Jenkins 配置的微妙问题
    • 系统性解决方案:从诊断到修复
      • 第一阶段:诊断和问题定位
        • 1.1 手动 SSH 连接测试
        • 1.2 网络连通性深度检查
        • 1.3 GitLab 服务器状态检查
      • 第二阶段:针对性解决方案
        • 2.1 SSH 密钥问题的彻底解决
        • 2.2 Jenkins 配置优化
        • 2.3 网络层优化
      • 第三阶段:预防性措施和最佳实践
        • 3.1 建立监控和告警机制
        • 3.2 实施定期维护流程
        • 3.3 文档化和知识共享
    • 高级故障排除技巧
      • 使用 Git 调试功能
      • 分析网络数据包
      • 使用替代的 Git 实现
    • 总结与反思

Jenkins Git 克隆失败深度解析:从 “Connection reset by peer” 到彻底解决

引言:持续集成的脆弱环节

在现代软件工程实践中,持续集成/持续部署(CI/CD)已成为开发流程的核心组成部分。Jenkins 作为最流行的开源自动化服务器,承载着代码构建、测试和部署的关键任务。然而,就是这个看似强大的工具链中,一个简单的 Git 克隆操作却可能成为整个流程的"阿喀琉斯之踵"。

近日,一位开发者在 Jenkins 执行构建任务时遇到了一个典型的失败场景:ssh_exchange_identification: read: Connection reset by peer。这个错误不仅中断了自动化流程,还暴露了 CI/CD 管道中多个潜在的问题点。本文将通过这个具体案例,深入探讨问题根源,并提供一套完整的解决方案。

错误场景再现与初步分析

日志片段解读

13:40:30 Cloning repository git@gitlab.test.com:ad/server/ysx-spider.git 13:40:30 > git init /var/lib/jenkins/workspace/ad_spider_huoshan # timeout=10 13:40:30 Fetching upstream changes from git@gitlab.test.com:ad/server/ysx-spider.git 13:40:30 ERROR: Error cloning remote repo 'origin' 13:40:30 hudson.plugins.git.GitException: Command "git fetch --tags --progress git@gitlab.test.com:ad/server/ysx-spider.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: 13:40:30 stdout: 13:40:30 stderr: ssh_exchange_identification: read: Connection reset by peer 13:40:30 fatal: Could not read from remote repository.

从日志中我们可以看到几个关键信息点:

  1. 克隆操作在连接建立阶段就失败了
  2. 错误发生在 SSH 握手过程中
  3. 服务器端主动重置了连接
  4. Git 客户端无法从远程仓库读取数据

错误含义深度解析

“Connection reset by peer”这个错误信息背后隐藏着复杂的网络交互过程。在 TCP/IP 协议中,当一方发送了一个 RST(重置)包时,就会产生这个错误。具体到 SSH 连接,这意味着:

  1. 连接建立阶段被中断:客户端发送 SYN 包,服务器可能回复了 SYN-ACK,但在 SSH 协议层握手时被拒绝
  2. SSH 守护进程的主动拒绝:sshd 服务接受了 TCP 连接,但在验证阶段发现了问题并立即终止
  3. 安全策略的强制执行:可能是防火墙、入侵检测系统或 SSH 配置的安全规则触发了连接重置

根本原因的多维度分析

1. SSH 密钥生态系统故障

SSH 密钥认证是自动化流程中最常用的认证方式,但这个看似简单的机制实际上包含了多个可能失败的点:

密钥格式问题:现代 OpenSSH 默认使用较新的密钥格式,而一些旧系统可能无法正确处理。特别是当密钥包含不支持的算法或格式时,sshd 会直接拒绝连接。

权限配置错误:SSH 对文件权限有着严格的要求:

  • 用户主目录权限必须为 755 或更严格
  • .ssh 目录权限必须为 700
  • 私钥文件权限必须为 600
  • 公钥文件权限通常为 644

任何权限偏差都可能导致 sshd 出于安全考虑拒绝连接。

密钥链管理问题:在 Jenkins 环境中,密钥可能存储在 Jenkins 凭据管理器中,这个过程中可能存在:

  • 密钥格式转换时的字符编码问题
  • 换行符处理不当(Windows vs Unix)
  • 密钥内容被意外修改或截断

2. 网络层的隐蔽问题

防火墙和网络安全组的静默拦截:现代企业网络通常部署了多层安全防护:

  • 网络层的 ACL(访问控制列表)
  • 应用层的 WAF(Web 应用防火墙)
  • 云服务商的安全组规则

这些安全措施可能在没有任何明显日志的情况下阻断连接,特别是对于非标准端口的 SSH 连接。

连接追踪和状态检测:一些先进的防火墙会进行连接状态追踪,如果检测到异常流量模式(如短时间内大量连接尝试),可能会主动重置连接以防止潜在攻击。

MTU 和分包问题:在某些网络环境中,最大传输单元(MTU)设置不当可能导致数据包分片,而一些安全设备可能错误地处理这些分片数据包,导致连接异常。

3. GitLab 服务器的限制和保护机制

并发连接限制:GitLab 默认对 SSH 连接有一定的并发限制,特别是在资源受限的环境中。当 Jenkins 同时运行多个作业时,可能触发了这些限制。

访问频率控制:为了防止暴力破解,GitLab 可能会对来自同一 IP 的连接频率进行限制。如果 Jenkins 服务器频繁重试,可能被暂时封禁。

资源耗尽防护:当 GitLab 服务器内存、CPU 或文件描述符资源紧张时,可能会拒绝新的 SSH 连接以保护现有服务。

4. Jenkins 配置的微妙问题

凭据管理器的兼容性问题:不同版本的 Jenkins 和凭据插件可能存在兼容性问题,导致存储的 SSH 密钥在实际使用时被错误处理。

代理配置的复杂性:在需要通过代理服务器访问 GitLab 的环境中,代理配置可能不正确或不完整,特别是在 SSH over HTTP 代理的场景中。

工作空间清理的副作用:日志中显示在克隆前执行了cleanWs,这可能导致之前缓存的 SSH 连接信息被清除,影响了连接复用。

系统性解决方案:从诊断到修复

第一阶段:诊断和问题定位

1.1 手动 SSH 连接测试

在 Jenkins 服务器上执行详细的连接测试:

# 1. 基本连接测试ssh-T git@gitlab.test.com# 2. 详细调试模式ssh-vvvT git@gitlab.test.com2>&1|teessh_debug.log# 3. 指定特定密钥测试ssh-i /path/to/private/key -T git@gitlab.test.com# 4. 测试不同端口(如果使用非标准端口)ssh-p2222-T git@gitlab.test.com

通过详细日志可以观察到:

  • 连接建立的具体阶段
  • 密钥认证的详细过程
  • 服务器返回的具体错误信息
1.2 网络连通性深度检查
# 1. 基本的端口连通性测试nc-zv gitlab.test.com22telnet gitlab.test.com22# 2. 路由追踪traceroutegitlab.test.commtr--report gitlab.test.com# 3. 数据包捕获(需要权限)tcpdump -i anyhostgitlab.test.com and port22-w ssh_capture.pcap# 4. 连接时间统计timessh-oConnectTimeout=10-T git@gitlab.test.com
1.3 GitLab 服务器状态检查

如果可能,检查 GitLab 服务器相关日志:

# GitLab SSH 日志tail-f /var/log/gitlab/gitlab-shell/gitlab-shell.log# SSH 守护进程日志tail-f /var/log/auth.logtail-f /var/log/secure# GitLab 服务状态gitlab-ctl status gitlab-rake gitlab:checkSANITIZE=true

第二阶段:针对性解决方案

2.1 SSH 密钥问题的彻底解决

重新生成和配置密钥

# 1. 生成新的 ED25519 密钥(推荐)ssh-keygen -t ed25519 -C"jenkins@$(hostname)"-f ~/.ssh/jenkins_gitlab# 2. 或者生成 RSA 密钥(兼容性更好)ssh-keygen -t rsa -b4096-C"jenkins@$(hostname)"-f ~/.ssh/jenkins_gitlab# 3. 设置正确的权限chmod700~/.sshchmod600~/.ssh/jenkins_gitlabchmod644~/.ssh/jenkins_gitlab.pub# 4. 将公钥添加到 GitLabcat~/.ssh/jenkins_gitlab.pub

创建详细的 SSH 配置文件

# ~/.ssh/configHost gitlab.test.com HostName gitlab.test.com UsergitIdentityFile ~/.ssh/jenkins_gitlab Port22TCPKeepAliveyesServerAliveInterval60ServerAliveCountMax5# 如果是通过代理访问# ProxyCommand nc -X connect -x proxy.company.com:3128 %h %p# 调整连接参数ConnectTimeout30ConnectionAttempts3# 禁用部分不安全的算法(如果需要)Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com KexAlgorithms curve25519-sha256@libssh.org HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
2.2 Jenkins 配置优化

使用 SSH Agent 插件

  1. 安装 “SSH Agent Plugin”
  2. 在 Jenkinsfile 中正确使用 sshagent:
pipeline{agent any environment{// 设置 Git 相关环境变量GIT_SSH_COMMAND='ssh -o BatchMode=yes -o StrictHostKeyChecking=no'}stages{stage('Checkout'){steps{sshagent(['jenkins-gitlab-key']){checkout([$class:'GitSCM',branches:[[name:'*/main']],extensions:[],userRemoteConfigs:[[url:'git@gitlab.test.com:ad/server/ysx-spider.git',credentialsId:'jenkins-gitlab-key']]])}}}}}

配置 Git 客户端的详细参数

stage('Checkout'){steps{checkout([$class:'GitSCM',branches:[[name:'*/main']],extensions:[[$class:'CloneOption',timeout:30,depth:1,noTags:false,shallow:true,// 重要:禁用 SSL 验证(仅用于测试)// honorRefspec: true]],gitTool:'Default',userRemoteConfigs:[[url:'git@gitlab.test.com:ad/server/ysx-spider.git',credentialsId:'NewGitlab_git_access',// 设置详细的超时参数timeout:300]]])}}
2.3 网络层优化

调整系统网络参数

# 增加本地端口范围echo"net.ipv4.ip_local_port_range = 1024 65000">>/etc/sysctl.conf# 增加 TCP 连接重试次数echo"net.ipv4.tcp_syn_retries = 5">>/etc/sysctl.confecho"net.ipv4.tcp_synack_retries = 5">>/etc/sysctl.conf# 启用 TCP keepaliveecho"net.ipv4.tcp_keepalive_time = 300">>/etc/sysctl.confecho"net.ipv4.tcp_keepalive_probes = 5">>/etc/sysctl.confecho"net.ipv4.tcp_keepalive_intvl = 15">>/etc/sysctl.conf# 应用配置sysctl -p

配置 Git 使用 HTTP/HTTPS 作为备选方案

// 在 Jenkinsfile 中添加回退机制script{defuseSsh=truetry{// 先尝试 SSHcheckout([$class:'GitSCM',branches:[[name:'*/main']],userRemoteConfigs:[[url:'git@gitlab.test.com:ad/server/ysx-spider.git',credentialsId:'NewGitlab_git_access']]])}catch(Exception e){echo"SSH 克隆失败: ${e.getMessage()}"echo"尝试使用 HTTPS..."useSsh=false}if(!useSsh){// 使用 HTTPS 作为备选withCredentials([usernamePassword(credentialsId:'gitlab-https-credentials',usernameVariable:'GIT_USERNAME',passwordVariable:'GIT_PASSWORD')]){sh''' git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@gitlab.test.com/ad/server/ysx-spider.git . '''}}}

第三阶段:预防性措施和最佳实践

3.1 建立监控和告警机制

Jenkins 构建健康度监控

  1. 使用 Jenkins 的 Prometheus 插件暴露指标
  2. 配置 Grafana 仪表板监控构建成功率
  3. 设置关键失败的即时告警(如 Slack、钉钉、邮件)

GitLab 连接健康检查脚本

#!/bin/bash# check_gitlab_connectivity.shHOST="gitlab.test.com"PORT=22THRESHOLD=3TIMEOUT=10check_ssh(){localresult=$(timeout$TIMEOUTssh-oBatchMode=yes -oConnectTimeout=$TIMEOUT -p $PORT git@$HOST"echo ok"2>&1)if[[$result==*"ok"*]];thenecho"SSH 连接正常"return0elseecho"SSH 连接失败:$result"return1fi}# 重试机制foriin$(seq1$THRESHOLD);doecho"尝试第$i次连接..."ifcheck_ssh;thenexit0fisleep5doneecho"SSH 连接持续失败,发送告警"# 发送告警逻辑exit1
3.2 实施定期维护流程

SSH 密钥轮换计划

  1. 每季度轮换一次 Jenkins 使用的部署密钥
  2. 使用密钥管理系统自动轮换
  3. 保持新旧密钥同时可用一段时间以确保平滑过渡

基础设施健康检查

  1. 每周检查 Jenkins 和 GitLab 服务器的资源使用情况
  2. 每月验证网络配置和防火墙规则
  3. 定期更新 SSH 相关软件包和安全补丁
3.3 文档化和知识共享

建立详细的故障排除文档,包括:

  1. 常见错误代码及其含义
  2. 逐步故障排除流程图
  3. 相关团队的联系信息(网络团队、安全团队、GitLab 管理员)
  4. 历史故障案例和解决方案

高级故障排除技巧

使用 Git 调试功能

# 启用 Git 的详细调试输出GIT_TRACE=1GIT_CURL_VERBOSE=1GIT_SSH_COMMAND="ssh -vvv"gitclone git@gitlab.test.com:ad/server/ysx-spider.git

分析网络数据包

# 捕获 SSH 握手过程tcpdump -i eth0 -s0-w ssh_handshake.pcap'host gitlab.test.com and port 22'# 使用 Wireshark 分析# 过滤器:ssh 或 tcp.port == 22# 特别关注:SSH 协议版本交换、密钥交换、用户认证过程

使用替代的 Git 实现

在某些极端情况下,可以尝试使用不同的 Git 客户端:

# 使用 libgit2(如果可用)# 或使用精简的 git 实现如 jgit

总结与反思

通过这个具体的 Jenkins Git 克隆失败案例,我们看到了现代 DevOps 流程中隐藏的复杂性。一个简单的git clone命令背后,涉及到了 SSH 协议栈、网络基础设施、安全策略、密钥管理、服务配置等多个层面的协同工作。

解决问题的关键不仅在于技术层面的修复,更在于建立系统性的预防机制:

  1. 深度监控:不仅要监控构建结果,还要监控连接建立的过程
  2. 冗余设计:为关键路径(如代码拉取)设计备用方案
  3. 定期演练:定期模拟各种故障场景,验证恢复流程
  4. 知识沉淀:将故障解决经验转化为团队知识资产

在微服务和云原生架构日益普及的今天,服务的依赖关系变得更加复杂。作为 DevOps 工程师,我们需要具备从应用层到底层网络的全面排查能力,同时也要构建足够弹性的自动化流程,确保单个组件的故障不会导致整个交付链条的中断。

记住,每一个自动化流程的中断,都是改进系统韧性的机会。通过系统性的分析、彻底的解决和持续的优化,我们可以构建更加可靠、高效的持续交付体系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1183426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cy5.5-α-Glucan,cy5.5-α-葡聚糖,荧光标记糖在药物递送中的应用

cy5.5-α-Glucan,cy5.5-α-葡聚糖,荧光标记糖在药物递送中的应用Cy5.5-α-Glucan(Cy5.5-α-葡聚糖)是由Cy5.5染料与α-葡聚糖(α-glucan)分子偶联形成的复合物。Cy5.5染料是一种高效的红色荧光染料&#xf…

毕业论文选题困难?这份Top10平台榜单帮你轻松搞定

10大论文选题工具核心对比 排名 工具名称 核心功能 效率评分 适用场景 1 aicheck 智能选题大纲生成 ★★★★★ 完全无头绪时的选题生成 2 aibiye 选题优化可行性分析 ★★★★☆ 已有初步方向的优化调整 3 知网 学术资源库选题参考 ★★★★☆ 专业领域深度…

2026年消防水池行业发展前瞻:陕西天畅流体设备有限公司引领行业高质量发展 - 深度智识库

随着我国城市化进程加速推进和消防安全法规持续完善,消防水池作为建筑消防系统的关键组成部分,其市场需求呈现稳步上升态势。据行业研究机构预测,2026年我国消防水池市场规模将突破120亿元,年均复合增长率达8.5%。…

Hunyuan-MT-7B怎么快速上手?一文详解网页推理部署流程

Hunyuan-MT-7B怎么快速上手?一文详解网页推理部署流程 1. 背景与技术价值 随着全球化进程的加速,多语言翻译需求在企业出海、内容本地化、跨语言交流等场景中日益增长。传统翻译模型往往受限于语种覆盖范围或翻译质量,难以满足复杂多样化的…

2026CRM排行榜:五大厂商销售管理系统核心能力横向盘点 - 毛毛鱼的夏天

在中小企业数字化转型中,CRM(客户关系管理系统)已从“辅助工具”升级为“销售流程的中枢神经”——它既要解决“线索怎么来、跟进怎么顺”的前端问题,也要支撑“报价准、签约稳、订单可控”的后端闭环。 本文选取超…

保姆级教程:用ms-swift在单卡V100上微调Qwen2系列模型

保姆级教程:用ms-swift在单卡V100上微调Qwen2系列模型 1. 前言 本文将详细介绍如何使用 ms-swift 框架,在单张 NVIDIA V100 显卡(32GB)上对 Qwen2 系列大语言模型进行高效微调。通过本教程,您将掌握从环境搭建、数据…

必学收藏!一文读懂Transformer自注意力机制:Q/K/V权重矩阵与点积运算原理

文章详细解析了Transformer自注意力机制的核心原理:通过Q/K/V矩阵计算token间关联权重,融合全局上下文。Q代表查询向量,K是键向量,V是值向量。点积运算能捕获语义相似性是因为模型训练使语义相似的文本对应方向相近的向量&#xf…

语音合成数据增强:提升Voice Sculptor效果

语音合成数据增强:提升Voice Sculptor效果 1. 引言:指令化语音合成的技术演进 近年来,随着深度学习在语音合成领域的持续突破,传统基于文本到语音(TTS)的系统已逐步向指令驱动型语音生成范式迁移。Voice …

混元翻译模型1.8B版:部署成本分析

混元翻译模型1.8B版:部署成本分析 1. 技术背景与问题提出 随着多语言交流需求的不断增长,高质量、低延迟的翻译服务已成为全球化应用的核心能力之一。然而,传统大参数量翻译模型在实际部署中面临显存占用高、推理成本昂贵、难以适配边缘设备…

延边延吉图们敦化珲春英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思备考赛道上,延边地区(延吉、图们、敦化、珲春)考生常面临诸多困境:优质教育机构资源分散难筛选,不同基础考生难以匹配个性化提分方案,备考过程中缺乏权威技巧指导,盲目选课导致性价比失衡等。为帮助本地考…

Youtu-2B LoRA微调实践:低成本个性化训练方案

Youtu-2B LoRA微调实践:低成本个性化训练方案 1. 引言 1.1 业务场景描述 随着大语言模型(LLM)在智能客服、内容生成和代码辅助等领域的广泛应用,企业对具备特定领域知识或风格表达能力的个性化模型需求日益增长。然而&#xff…

2026聚合物锂电池厂家推荐:行业优质品牌精选 - 品牌排行榜

聚合物锂电池作为现代电子设备与新能源领域的核心能源组件,凭借其高能量密度、轻量化设计及良好的安全性,广泛应用于智能手机、智能穿戴、便携式医疗设备等场景。选择技术成熟、品控严格的生产厂家,对保障产品性能与…

HY-MT1.5-7B翻译大模型实战|术语干预与上下文感知精准互译

HY-MT1.5-7B翻译大模型实战|术语干预与上下文感知精准互译 随着全球化进程加速,跨语言交流需求激增,传统云端翻译服务在隐私保护、网络依赖和响应延迟方面的局限日益凸显。在此背景下,腾讯推出的混元翻译大模型 1.5 版本&#xf…

智能摘要生成与文本优化工具:九款平台的性能测试与用户反馈分析

核心工具对比速览 工具名称 主要功能 生成速度 适用场景 独特优势 AIBiye 论文全流程辅助 3-5分钟/万字 开题到定稿 实证研究自动生成 AICheck 文献综述专家 2分钟/篇 文献梳理阶段 知网文献智能解析 AskPaper 学术问答助手 实时响应 研究过程答疑 支持中英…

权威发布:毕业论文选题Top10平台推荐与本科生避坑指南

10大论文选题工具核心对比 排名 工具名称 核心功能 效率评分 适用场景 1 aicheck 智能选题大纲生成 ★★★★★ 完全无头绪时的选题生成 2 aibiye 选题优化可行性分析 ★★★★☆ 已有初步方向的优化调整 3 知网 学术资源库选题参考 ★★★★☆ 专业领域深度…

延边龙井和龙汪清安图英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在全球化留学趋势持续升温的当下,雅思考试已成为延边龙井、和龙、汪清、安图地区学子开启海外求学之路的关键门槛。然而,当地雅思考生普遍面临诸多核心困境:优质培训资源分布不均、选课盲目缺乏方向、备考过程中难以…

Hunyuan翻译模型性能评测:Flores-200达78分部署实操

Hunyuan翻译模型性能评测:Flores-200达78分部署实操 1. 引言 随着多语言内容在全球范围内的快速传播,高质量、低延迟的神经机器翻译(NMT)模型成为智能应用的核心组件。然而,传统大模型往往依赖高算力环境&#xff0c…

九大AI摘要生成与润色平台的性能评估及使用体验对比

核心工具对比速览 工具名称 主要功能 生成速度 适用场景 独特优势 AIBiye 论文全流程辅助 3-5分钟/万字 开题到定稿 实证研究自动生成 AICheck 文献综述专家 2分钟/篇 文献梳理阶段 知网文献智能解析 AskPaper 学术问答助手 实时响应 研究过程答疑 支持中英…

Linux DRM 内存管理子系统的概念关系理解:gem、ttm、drm_buddy

概述 在 Linux 直接渲染管理器子系统中,drm_buddy、GEM 和 TTM 是三个重要的内存管理组件。它们并不是互斥的关系,而是服务于内存管理堆栈的不同层级,协同工作以实现高效的 GPU 内存管理。 核心组件 1. GEM 定位:用户空间 API…

Qwen3-VL视频动态理解实战:数小时内容秒级索引系统搭建教程

Qwen3-VL视频动态理解实战:数小时内容秒级索引系统搭建教程 1. 引言:为什么需要视频秒级索引系统? 随着多模态大模型的快速发展,传统视频分析方式已难以满足高效检索与深度语义理解的需求。尤其在教育、安防、媒体归档等场景中&…