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

Docker构建访问Azure Artifacts私有Nuget源报NTLM认证错误如何修复

错误核心原因

你遇到的NTLM认证报错是因为Linux容器默认没有配置对应Azure DevOps Server私有Nuget源的认证规则,且你Dockerfile中所有和凭证、认证相关的配置都处于注释状态,dotnet restore运行时无法读取到合法的访问凭证,所以请求私有源被拒绝。

修复方案
  • 第一步:调整Dockerfile中build阶段的配置,放开注释的必要认证配置,修正变量转义问题:
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build

ARG FEED_URL
ARG PAT  

# 安装NTLM认证依赖,你已经加了,保留即可
RUN apt-get update && apt-get install -y --no-install-recommends gss-ntlmssp

# 放开以下环境变量配置,注意JSON转义
ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS "{\"endpointCredentials\": [{\"endpoint\":\"${FEED_URL}\", \"username\":\"any\", \"password\":\"${PAT}\"}]}"

# 安装Azure Artifacts官方凭证提供器
RUN wget -qO- https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh | bash

WORKDIR /src

COPY ["App1/App1.csproj", "App1/"]
COPY ["App2/App2.csproj", "App2/"] 
COPY nuget.config ./

# 直接运行restore即可,凭证提供器会自动匹配环境变量中的凭证
RUN dotnet restore "App1/App1.csproj" --configfile nuget.config
  • 第二步:检查你的nuget.config文件,确保私有源的配置和你传入的FEED_URL完全一致,不要有多余的尾部斜杠或者路径错误,示例配置参考:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="company" value="http://test/DefaultCollection/test/_packaging/company/nuget/v3/index.json" />
  </packageSources>
</configuration>
  • 第三步:验证你传入的$(PAT)变量权限,确保该PAT是在你的Azure DevOps Server中生成,且分配了「包>读取」的权限,没有过期。
  • 第四步:无需调整现有Docker构建任务的配置,你已经正确传入了PAT和FEED_URL两个构建参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:06:04