如何保存我的azure色帐户,以便我不必再次input密码

我正在使用* nix机器中的azure cli工具来pipe理Azure帐户中的个人vms。 我想知道是否有一种方法来保存我的login凭据,这样我就不必重做azure login命令,既不input我的密码/凭证。

我使用azure account download下载了我的帐户设置,并使用azure account download导入function在我的计算机上导入了该azure account import 。但是,当我重新启动会话时,仍然需要执行手动login步骤。

因此,有没有办法设置azure色的cli来保存我的账户信息,这样我就不必手动login了?

当你打电话给azure login你实际上得到了一个只有有限生命的令牌,所以即使你能在会话中坚持,它仍然会在12小时后过期。 可能但不build议将用户名和密码指定为脚本的一部分:

 azure login -u $username -p $password 

要做到这一点,您必须使用Azure Active Directory帐户进行身份validation,假设您愿意冒这个风险,因为您正在pipe理您的个人 Azure订阅,这可能是最简单的select。

根据我的经验,在公司,企业或高风险的情况下,有两种方法更适合:

Azure自动化

Azure自动化是一个Azure平台服务,它允许您在Azure中构build参数化的工作stream,您可以通过Web UI或命令行按计划触发这些工作stream。 重复性任务被简化,因为工作stream程所运行的环境在时间和多个环境中是一致的。

Azure Active Directory服务主体

使用服务主体进行的Azurevalidation允许您使用证书( .pfx )login到Azure,假定所述证书没有密码存储,那么您可以按照以下步骤实现无密码login:

  1. 生成一个公钥/私钥对用于身份validation。
  2. 创build一个新的Azure Active Directory应用程序
  3. 为您的AAD应用程序创build一个新的服务负责人
  4. 将您的订阅许可授予您的服务负责人
  5. 在您的脚本中与您的服务负责人进行身份validation

     cert=$(openssl x509 -in "./examplecert.pem" -fingerprint -noout | sed 's/SHA1 Fingerprint=//g' | sed 's/://g' tenantId=$(azure account show -s <subscriptionId> --json | jq -r '.[0].tenantId') appId=$(azure ad app show --search exampleapp --json | jq -r '.[0].appId') azure login --service-principal --tenant "$tenantId" -u "$appId" --certificate-file ./examplecert.pem --thumbprint "$cert"