You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArgoCD多源应用同步正常但频繁报SSH握手失败错误求助

ArgoCD多源应用SSH连接重置错误处理

问题描述

创建包含两个源的ArgoCD应用后,同步状态显示正常,但每隔几秒会触发以下错误:

ssh: handshake failed: read tcp 10.254.3.21:36808->20.41.6.26:22: read: connection reset by peer 
and failed to get git client for repo 

应用配置如下:

project: default
destination:
  server: 'https://kubernetes.default.svc'
  namespace: akv2k8s
syncPolicy:
  automated:
    prune: true
    selfHeal: true
sources:
  - repoURL: 'http://charts.spvapi.no'
    targetRevision: 2.3.2
    helm:
      valueFiles:
        - $values/charts/akv2k8s.yaml
    chart: akv2k8s
  - repoURL: 'git@ssh.##.azure.com:v3/####'
    targetRevision: helm_chart_test
    ref: values

已添加带有SSH密钥的repo-cred Secret,且单个源使用时密钥可正常工作。

解决建议

  • 确认Secret与多源仓库的关联准确性:检查ArgoCD应用是否正确关联repo-cred Secret,确保SSH密钥对应的仓库URL与应用中第二个源的repoURL完全匹配(包括主机名、端口、路径的大小写和特殊字符)。
  • 排查网络层面的连接限制:
    • 检查ArgoCD所在集群与Azure Git仓库的网络连通性,确认是否有防火墙、安全组或代理拦截SSH(22端口)长连接,导致连接被重置。
    • 在ArgoCD的repo-server pod内手动执行ssh git@ssh.##.azure.com -p 22测试连接,观察是否出现同样的重置问题。
  • 调整SSH连接参数:在ArgoCD的ConfigMap中添加SSH保活配置,避免连接因闲置被远端重置:
    data:
      ssh_keep_alive: "yes"
      ssh_keep_alive_interval: "30"
    
  • 清理ArgoCD仓库缓存:执行命令kubectl exec -n argocd deployment/argocd-repo-server -- rm -rf /tmp/git清理repo-server本地缓存,随后重启repo-server pod,避免缓存的无效连接信息引发重复错误。
  • 验证SSH密钥的权限和有效期:确认Azure Git仓库中该SSH密钥对应的账号拥有仓库读取权限,且密钥未过期、未被撤销。
  • 检查ArgoCD版本兼容性:若使用的ArgoCD版本较旧,可能存在多源应用的SSH连接BUG,尝试升级至最新稳定版后观察问题是否消失。

内容的提问来源于stack exchange,提问作者jitender singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:37:26