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-credSecret,确保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
相关产品推荐
相关产品推荐

