Command-Line-Interface

如何保存我的 azure 帳戶,這樣我就不必再次輸入密碼

  • May 7, 2016

我正在使用azure cli*nix 機器中的工具來管理我在 Azure 帳戶中的個人虛擬機。我想知道是否有辦法保存我的登錄憑據,這樣我就不必重做azure login命令,也不必輸入我的密碼/憑據。

我使用 下載我的帳戶設置azure account download並在我的機器上使用 導入azure account import,但是當我重新啟動會話時,我仍然需要執行手動登錄步驟。

因此,有沒有辦法設置 azure cli 來保存我的帳戶詳細資訊,這樣我就不必手動登錄了?

當你打電話時,azure login你實際上得到的令牌只有有限的生命週期,所以即使你可以在會話中持續存在,它也會在 12 小時後過期。可以但不建議將使用者名和密碼指定為腳本的一部分:

azure login -u $username -p $password

為此,您必須使用 Azure Active Directory 帳戶進行身份驗證,假設您願意承擔此風險,因為您正在管理您的個人Azure 訂閱,這可能是最簡單的選擇。

根據我的經驗,有兩種方法更適合公司、企業或高風險場景:

Azure 自動化

Azure 自動化是一項 Azure 平台服務,它允許你在 Azure 中建構參數化工作流,你可以從 Web UI 或命令行按計劃觸發這些工作流。重複性任務得到了簡化,因為工作流執行的環境在時間和多個環境中是一致的。

Azure Active Directory 服務主體

使用服務主體向 Azure 進行身份驗證允許您使用證書 ( .pfx) 登錄到 Azure,假設儲存的證書沒有密碼,那麼您可以按照以下步驟實現無密碼登錄:

  1. 生成用於身份驗證的公鑰/私鑰對。
  2. 創建新的 Azure Active Directory 應用程序
  3. 為您的 AAD 應用程序創建新的服務主體
  4. 將您的訂閱權限授予您的服務主體
  5. 在您的腳本中使用您的服務主體進行身份驗證
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"

引用自:https://serverfault.com/questions/775429