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

Azure DevOps CI/CD流水线权限拒绝问题排查与解决

解决Azure DevOps CI/CD流水线Git拉取权限拒绝问题

问题场景

我正在构建一条CI/CD流水线,用于将Azure DevOps Repo中的代码推送到Ubuntu Azure VM服务器的本地仓库。运行指定YAML流水线时出现权限拒绝错误,无法读取远程仓库。

错误信息

尝试建立SSH连接到***@4.---.---.---:22
连接成功。执行cd /webdata/www/apps/src git pull origin master后,返回:
##[error]Permission denied, please try again.
##[error]Permission denied, please try again.
##[error]git@ssh.dev.azure.com: Permission denied (password,publickey).
##[error]fatal: Could not read from remote repository.
请确保您拥有正确的访问权限且仓库存在。

使用的YAML代码

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: SSH@0
  inputs:
    sshEndpoint: 'devops-pipeline-sc'
    runOptions: 'commands'
    sshCommonArgs: '-o StrictHostKeyChecking=no'
    commands: |
      cd /webdata/www/apps/src
      git pull origin master  # Pulling changes from the remote master branch
    readyTimeout: '20000'

解决方案

  • 在Ubuntu VM上配置SSH密钥对

    1. 在Ubuntu VM终端执行 ssh-keygen -t rsa -b 4096 -C "你的邮箱地址",全程按回车使用默认配置生成密钥对。
    2. 执行 cat ~/.ssh/id_rsa.pub,复制输出的公钥全部内容。
    3. 登录Azure DevOps,进入目标仓库的设置 -> SSH密钥,点击添加,粘贴公钥内容并设置名称后保存。
  • 验证VM上Git仓库的远程地址
    在VM上进入/webdata/www/apps/src目录,执行 git remote -v 检查远程地址是否为Azure DevOps仓库的SSH格式(格式应为git@ssh.dev.azure.com:v3/{组织名}/{项目名}/{仓库名})。若地址错误,执行 git remote set-url origin git@ssh.dev.azure.com:v3/{组织名}/{项目名}/{仓库名} 更新。

  • 修正VM上SSH密钥的权限
    确保密钥文件权限符合SSH安全要求:

    • 执行 chmod 700 ~/.ssh
    • 执行 chmod 600 ~/.ssh/id_rsa
    • 执行 chmod 644 ~/.ssh/id_rsa.pub
  • 添加SSH连接测试(可选)
    可以在流水线的SSH任务中先添加测试命令,验证VM与Azure DevOps的SSH连通性:

    commands: |
      cd /webdata/www/apps/src
      ssh -T git@ssh.dev.azure.com  # 测试SSH连接有效性
      git pull origin master
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:42:18