使用 Microsoft Entra ID 和 OpenSSH 登入 Azure 中的 Linux 虛擬機器
發行項
若要在 Azure 中改善 Linux 虛擬機器 (VM) 的安全性,您可以整合 Microsoft Entra 驗證。 您現在可以使用 Microsoft Entra ID 做為核心驗證平台和憑證授權單位,利用 Microsoft Entra ID 和 OpenSSH 憑證型驗證透過 SSH 連線到 Linux VM。 這項功能可讓組織使用 Azure 角色型存取控制 (RBAC) 和條件式存取原則來管理對 VM 的存取。
本文說明如何建立和設定 Linux VM,並使用 OpenSSH 憑證型驗證透過 Microsoft Entra ID 進行登入。
搭配 OpenSSH 憑證型驗證使用 Microsoft Entra ID 登入 Azure 中的 Linux VM 有許多安全性優點。 其中包含:
使用您的 Microsoft Entra 認證登入 Azure Linux VM。
取得 SSH 金鑰型驗證,而不需要將 SSH 金鑰散發給使用者,或在您部署的任何 Azure Linux VM 上佈建 SSH 公開金鑰。 相較於必須擔心過時 SSH 公開金鑰的蔓延可能導致未經授權的存取,這項體驗簡單得多。
減少對本機系統管理員帳戶的依賴、認證遭竊和弱式認證。
針對 Microsoft Entra ID 而設定的密碼複雜性及密碼存留期原則,也有助於保護 Linux VM。
透過 RBAC,指定誰能夠以一般使用者身分或系統管理員權限登入 VM。 當使用者加入您的團隊時,您可以更新 VM 的 Azure RBAC 原則來授與適當的存取權。 當員工離開您的組織時,其使用者帳戶會從 Microsoft Entra ID 中停用或移除,且他們將無法再存取您的資源。
使用條件式存取,將原則設定為要求多重要素驗證,以及要求您的用戶端裝置必須是受控裝置 (例如:符合規範或已使用 Microsoft Entra 混合式聯結的裝置),才能透過 SSH 連線到 Linux VM。
使用 Azure 部署和稽核原則來要求對 Linux VM 進行 Microsoft Entra 登入,並標記未核准的本機帳戶。
使用 Active Directory 同盟服務的客戶也可以使用 Microsoft Entra ID 登入 Linux VM。
支援的 Linux 發行版本和 Azure 區域
支援區域中的部署目前支援下列 Linux 發行版本:
Distribution
版本
通用基礎 Linux Mariner (CBL-Mariner)
CBL-Mariner 1、CBL-Mariner 2
AlmaLinux
AlmaLinux 8、AlmaLinux 9
Debian
Debian 9、Debian 10、Debian 11、Debian 12
openSUSE
openSUSE Leap 42.3、openSUSE Leap 15.1+
Oracle
Oracle Linux 8、Oracle Linux 9
RedHat Enterprise Linux (RHEL)
RHEL 7.4 至 RHEL 7.9、RHEL 8.3+、RHEL 9.0+
Rocky
Rocky 8、Rocky 9
SUSE Linux Enterprise Server (SLES)
SLES 12、SLES 15.1+
Ubuntu
Ubuntu 16.04 至 Ubuntu 24.04
以下是這項功能目前支援的 Azure 區域:
Azure 全域
Azure Government
由 21Vianet 營運的 Microsoft Azure
不支援在 Azure Kubernetes Service (AKS) 叢集上使用 Azure CLI 的 SSH 延伸模組。 如需詳細資訊,請參閱 AKS 的支援原則。
若要在 Azure 中針對 Linux VM 使用 Microsoft Entra 登入,您必須先為 Linux VM 啟用 Microsoft Entra 登入選項。 然後為已獲授權登入 VM 的使用者設定 Azure 角色指派。 最後,您會使用支援 OpenSSH 的 SSH 用戶端,例如 Azure CLI 或 Azure Cloud Shell,透過 SSH 連線到您的 Linux VM。
username=$(az account show --query user.name --output tsv)
rg=$(az group show --resource-group myResourceGroup --query id -o tsv)
az role assignment create \
--role"Virtual Machine Administrator Login" \
--assignee$username \
--scope$rg
注意
如果您的 Microsoft Entra 網域和登入使用者名稱網域不符,您必須以 --assignee-object-id 指定使用者帳戶的物件識別碼,而不只是針對 --assignee 指定使用者名稱。 您可以使用 az ad user list 取得使用者帳戶的物件識別碼。
當獲指派 [VM 系統管理員] 角色的使用者成功透過 SSH 連線到 Linux VM 之後,將能夠執行 sudo,而沒有其他互動或驗證需求。 獲指派 [VM 使用者] 角色的使用者將無法執行 sudo。
連線到虛擬機器擴展集中的 VM
支援虛擬機器擴展集,但啟用和連線到虛擬機器擴展集 VM 的步驟稍有不同。
建立或選擇已存在的虛擬機器擴展集。 為您的虛擬機器擴展集啟用系統指派的受控識別:
Azure CLI
az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
在虛擬機器擴展集上安裝Microsoft Entra 延伸模組:
Azure CLI
az vmss extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group AzureADLinuxVM --vmss-name myVMSS
虛擬機器擴展集通常不會有公用 IP 位址。 您必須從可連線到 Azure 虛擬網路的另一部電腦連線到這些擴展集。 此範例說明如何使用虛擬機器擴展集 VM 的私人 IP,從相同虛擬網路中的電腦進行連線:
Azure CLI
az ssh vm --ip10.11.123.456
注意
您無法使用 --resource-group 和 --name 參數自動判斷虛擬機器擴展集 VM 的 IP 位址。
從上一個 (預覽) 版本移轉
如果您使用了以裝置程式碼流程為基礎的 Linux 舊版 Microsoft Entra 登入,請使用 Azure CLI 完成下列步驟:
將 VM 上的 AADLoginForLinux 延伸模組解除安裝:
Azure CLI
az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
注意
如果目前有任何登入 VM 的 Microsoft Entra 使用者,則延伸模組解除安裝可能會失敗。 確定先將所有使用者登出。
在您的 VM 上啟用系統指派的受控識別:
Azure CLI
az vm identity assign -g myResourceGroup -n myVm
在 VM 上安裝 AADSSHLoginForLinux 延伸模組:
Azure CLI
az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory \
--name AADSSHLoginForLinux \
--resource-group myResourceGroup \
--vm-name myVM
使用 Azure 原則確保符合標準並評估合規性
使用 Azure 原則來:
請確定已為新的和現有的 Linux 虛擬機器啟用 Microsoft Entra 登入。
在合規性儀表板上大規模評估環境的合規性。
您可以透過這項功能,使用許多等級的強制執行。 您可以在環境中標記未啟用 Microsoft Entra 登入之新的和現有的 Linux VM。 您也可以使用 Azure 原則,在未啟用 Microsoft Entra 登入的新 Linux VM 上部署Microsoft Entra 延伸模組,並將現有的 Linux VM 補救為相同的標準。
除了這些功能之外,您也可以使用 Azure 原則來偵測和標記在電腦上建立了未核准之本機帳戶的 Linux VM。 若要深入了解,請檢閱 Azure 原則。