Azure DevOps自托管代理迁移GitHub后管道连接重置故障排查
问题:Azure DevOps自托管代理YAML管道检出GitHub仓库失败
团队原本在Azure DevOps自托管代理上运行TestComplete脚本的YAML管道,把代码库从Azure Repos迁移到GitHub Repos后,管道一直报 Recv failure: Connection was reset 错误。我对YAML不太熟悉,现在卡在这里,目标是成功检出GitHub仓库的master分支。
已尝试的操作
- 设置
checkout: none后添加自定义脚本克隆仓库、检出master分支,但提示git命令无法识别(已经确认自托管代理上安装了Git,且手动测试可用) - 在checkout段加了
persistCredentials: true参数,还是出现同样的连接重置错误
补充说明
- 用Azure Pipelines托管的ubuntu-latest代理跑同类管道完全正常
- 代码库迁移前,这个自托管代理上的管道没出过问题
- 错误截图:

可行解决方案
1. 排查自托管代理的网络问题
自托管代理大概率是网络访问受限,连不上GitHub:
- 在代理机器上手动执行
curl https://github.com,测试能不能正常访问GitHub的HTTPS服务(443端口) - 如果代理机器需要走企业内网代理,得给Azure DevOps代理配置代理参数:
- 进入代理安装目录,Windows执行
./config.cmd configure,Linux执行./config.sh configure - 按照提示输入企业代理地址(比如
http://proxy.company.com:8080)和认证信息(如果需要) - 重启Azure DevOps代理服务生效
- 进入代理安装目录,Windows执行
- 临时关闭代理机器上的防火墙、杀毒软件,测试是不是这些工具拦截了GitHub的连接
2. 解决Git命令无法识别的问题
虽然Git装了,但管道执行时可能没加载到Git的环境变量:
- 在自定义克隆脚本里写Git的完整路径,比如Windows下用
"C:\Program Files\Git\bin\git.exe" clone https://github.com/你的组织/你的仓库.git - 把Git的bin目录(比如
C:\Program Files\Git\bin)加到代理机器的系统环境变量PATH里,然后重启Azure DevOps代理服务
3. 调整Checkout步骤的YAML配置
用更明确的配置替代默认设置,试试浅克隆减少数据传输:
steps: - checkout: git://你的组织/你的仓库@master persistCredentials: true fetchDepth: 1 # 只克隆最近一次提交,避免大文件传输超时
或者直接用HTTPS地址:
steps: - checkout: https://github.com/你的组织/你的仓库.git@master persistCredentials: true
4. 验证权限配置
确保Azure DevOps能正常访问GitHub仓库:
- 检查Azure DevOps项目里的GitHub服务连接,重新生成GitHub个人访问令牌(PAT),确保PAT有仓库的读取权限
- 在代理机器上手动用Git克隆仓库,看是不是需要SSH密钥认证,如果需要,把密钥放到代理机器的用户目录
.ssh下
内容的提问来源于stack exchange,提问作者Nikhil Nautiyal
相关产品推荐
相关产品推荐

