Command-Line-Interface
如何保存我的 azure 帳戶,這樣我就不必再次輸入密碼
我正在使用
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,假設儲存的證書沒有密碼,那麼您可以按照以下步驟實現無密碼登錄:
- 生成用於身份驗證的公鑰/私鑰對。
- 創建新的 Azure Active Directory 應用程序
- 為您的 AAD 應用程序創建新的服務主體
- 將您的訂閱權限授予您的服務主體
- 在您的腳本中使用您的服務主體進行身份驗證
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"