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

ArgoCD拉取Bitbucket私有仓库失败:SSH握手密钥不匹配

解决ArgoCD因Bitbucket SSH密钥更新导致的仓库拉取失败问题

问题背景

  • 2023年5月15日,bitbucket.org为Bitbucket云主机新增了ecdsa和ed25519类型的SSH密钥
  • 此后ArgoCD无法拉取私有仓库,所有应用状态变为Unknown
  • 仓库服务器Pod报错:ssh: handshake failed: knownhosts: key mismatch

原因分析

ArgoCD的SSH known_hosts配置中存储的Bitbucket主机密钥未同步更新,与Bitbucket云新部署的密钥不匹配,导致SSH握手阶段的主机身份验证失败。

解决方案

方法1:手动更新known_hosts配置

  1. 获取Bitbucket最新的全量SSH主机密钥:

    ssh-keyscan bitbucket.org
    

    该命令会返回包含rsa、ecdsa、ed25519等所有类型的主机密钥。

  2. 定位ArgoCD存储known_hosts的配置对象:

    • 大部分部署中,该信息存储在名为argocd-ssh-known-hosts-cm的ConfigMap中;若使用Secret存储,则对应名称通常为argocd-ssh-known-hosts。
  3. 更新配置中的bitbucket.org条目:
    将步骤1获取的新密钥替换掉原有旧的bitbucket.org密钥内容,保存配置后,ArgoCD repo-server会自动加载新配置(或手动重启repo-server Pod生效)。

方法2:重新添加仓库触发密钥更新

  • 通过ArgoCD UI:进入「Settings」→「Repositories」,删除原有Bitbucket仓库后重新添加,添加过程中系统会自动获取并存储最新的主机密钥。
  • 通过ArgoCD CLI:
    # 先删除旧仓库(可选)
    argocd repo rm git@bitbucket.org:<你的用户名>/<你的仓库>.git
    # 重新添加仓库
    argocd repo add git@bitbucket.org:<你的用户名>/<你的仓库>.git --ssh-private-key-path <本地私钥路径>
    

方法3:临时禁用严格主机密钥检查(应急方案,不推荐)

若需快速恢复服务,可临时关闭SSH严格主机验证(存在安全风险,仅作临时使用):

  • 修改ArgoCD repo-server的SSH配置,添加StrictHostKeyChecking no到~/.ssh/config或全局SSH配置中;
  • 重启repo-server Pod后生效,后续必须尽快更新正确的主机密钥。

验证操作

更新配置后,执行以下操作确认修复:

  1. 重启ArgoCD repo-server Pod:
    kubectl rollout restart deployment argocd-repo-server -n argocd
    
  2. 查看应用状态,确认从Unknown恢复为正常状态;
  3. 检查repo-server Pod日志,确认不再出现ssh: handshake failed: knownhosts: key mismatch报错。

内容的提问来源于stack exchange,提问作者12345ieee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:37:16