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

Azure VM执行RunShellScript命令时出现无凭据错误求助

Azure CLI安装脚本带sudo执行报错的原因与解决

问题重现

执行以下Azure CLI命令在Linux虚拟机上安装Azure CLI时:

az vm run-command invoke --command-id RunShellScript --name <VMName> --resource-group <RGName> --scripts "curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash"

抛出错误:

Could not retrieve credential from local cache for service principal 0cf4e5cf-de8f-4524-8be6-5e2exxxxxx. Please run 'az login' for this service principal.

移除sudo后命令可正常运行。

原因分析

  • 环境变量继承导致凭据不匹配:sudo默认会重置多数环境变量,但部分Azure相关的环境变量(如AZURE_CLIENT_ID、AZURE_TENANT_ID)可能被意外带入root会话。安装脚本若触发Azure CLI的验证逻辑(比如旧版本升级检查),root用户的~/.azure目录无对应服务主体凭据缓存,因此报错。
  • 用户上下文差异:不用sudo时,脚本在VM当前用户上下文运行,该用户大概率已完成az login,~/.azure目录存在有效凭据,安装过程不会触发凭据缺失问题。

解决方法

  • 清空root会话的Azure环境变量:执行脚本时显式移除继承的Azure相关变量,避免触发凭据检查:
    az vm run-command invoke --command-id RunShellScript --name <VMName> --resource-group <RGName> --scripts "curl -sL https://aka.ms/InstallAzureCLIDeb | sudo env -u AZURE_CLIENT_ID -u AZURE_TENANT_ID -u AZURE_CLIENT_SECRET bash"
    
  • 使用无sudo的安装方式:直接用当前用户权限执行安装脚本(已验证有效),后续需root权限的操作单独用sudo处理。
  • (不推荐)为root用户配置凭据:若必须用sudo,先在root上下文完成az login,再执行安装脚本,但此方式存在安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:55:46