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

Azure DevOps自托管Agent拉取子模块时SSH主机密钥验证失败

Azure DevOps自托管Agent子模块拉取SSH验证失败修复方案

1. 检查子模块远程地址是否为SSH格式

主仓库拉取成功是因为InstallSSHKey@0配置的密钥对应SSH协议,但如果子模块用的是HTTPS地址,会绕过SSH密钥验证导致权限失败。

  • 本地仓库执行git submodule status查看子模块地址
  • 若为HTTPS,修改为SSH格式:
    git submodule set-url <子模块路径> git@ssh.dev.azure.com:v3/<组织名>/<项目名>/<子模块仓库名>
    
  • 提交修改并推送到主仓库:
    git add .gitmodules
    git commit -m "切换子模块地址为SSH格式"
    git push
    

2. 确保Known Hosts配置完整且生效

Windows环境下,InstallSSHKey@0生成的known_hosts可能未被子模块拉取的Git进程读取,需确保配置完整:

  • 重新执行ssh-keyscan ssh.dev.azure.com获取完整的host key,替换yml中knownHostsEntry的内容,不要省略字符
  • 或者在流水线中手动写入known_hosts:
    - script: |
        mkdir -p %USERPROFILE%\.ssh
        echo ssh.dev.azure.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm5swtJm0mYYiLaxsPTOGWJmDW8wUw2o8U77+FxnOHbKUfD56yvqMjJ7lFlLbUcIF四川UfOaM0D6p1lULW5Qvj2wHh3jR1Kl8FqplPm6rF5hNcacwP3d9G6KDLmXl13/DAa+Tiaxw2 >> %USERPROFILE%\.ssh\known_hosts
      displayName: '手动添加Azure DevOps到known_hosts'
    

3. 排查Agent运行用户权限

Windows Server上的Agent运行用户可能没有.ssh目录或工作目录的读写权限,导致密钥无法加载:

  • 打开服务管理器,找到Azure DevOps Agent服务,查看“登录身份”
  • 确保该用户对C:\agent\_work和%USERPROFILE%\.ssh目录有读写权限
  • 可临时切换为管理员用户运行Agent,验证是否解决问题

4. 确认子模块仓库的SSH权限配置

主仓库的SSH公钥已配置,但子模块仓库可能未添加该公钥:

  • 登录Azure DevOps,进入子模块对应的仓库,打开设置 > 仓库 > SSH公钥
  • 确认是否添加了同一公钥,若没有则添加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:53:15