Share via


使用 Microsoft Entra ID 和 OpenSSH 登入 Azure 中的 Linux 虛擬機

警告

本文參考 CentOS,亦即接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指導

若要改善 Azure 中 Linux 虛擬機 (VM) 的安全性,您可以與 Microsoft Entra 驗證整合。 您現在可以使用 Microsoft Entra ID 作為核心驗證平臺和證書頒發機構單位,使用 Microsoft Entra ID 和 OpenSSH 憑證型驗證,透過 SSH 連線到 Linux VM。 此功能可讓組織使用 Azure 角色型存取控制 (RBAC) 和條件式存取原則來管理 VM 的存取權。

本文說明如何使用 OpenSSH 憑證型驗證來建立及設定 Linux VM,並使用 Microsoft Entra ID 登入。

使用 Microsoft Entra ID 搭配 OpenSSH 憑證型驗證來登入 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 混合式),才能將它用於 Linux VM。
  • 使用 Azure 部署和審核策略來要求 Linux VM 的 Microsoft Entra 登入,並標幟未經核准的本機帳戶。

使用 Microsoft Entra ID 登入 Linux VM 適用於使用 Active Directory 同盟服務 的客戶。

支援的Linux散發套件和 Azure 區域

目前支援在支持的區域中部署支援下列 Linux 發行版:

Distribution 版本
Common Base Linux Mariner (CBL-Mariner) CBL-Mariner 1,CBL-Mariner 2
CentOS CentOS 7、CentOS 8
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+
SUSE Linux Enterprise Server (SLES) SLES 12、SLES 15.1+
Ubuntu Server Ubuntu Server 16.04 至 Ubuntu Server 22.04,Ubuntu 22.04 之後的所有次要版本

這項功能目前支援下列 Azure 區域:

  • Azure 全域
  • Azure Government
  • 由 21Vianet 營運的 Microsoft Azure

不支援在 Azure Kubernetes Service (AKS) 叢集上使用 Azure CLI 的 SSH 擴充功能。 如需詳細資訊,請參閱 AKS 的支持原則。

如果您選擇在本機安裝和使用 Azure CLI,它必須是 2.22.1 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組

注意

此功能也適用於 已啟用 Azure Arc 的伺服器

符合使用 OpenSSH 憑證型驗證以 Microsoft Entra ID 登入的需求

若要透過 Azure 中 Linux VM 的 SSH 憑證型驗證啟用 Microsoft Entra 登入,請務必符合下列網路、虛擬機和用戶端 (SSH 用戶端) 需求。

網路

VM 網路設定必須允許透過 TCP 連接埠 443 對下列端點進行輸出存取。

Azure 全域:

  • https://packages.microsoft.com:針對套件安裝和升級。
  • http://169.254.169.254:Azure 實例元數據服務端點。
  • https://login.microsoftonline.com:適用於 PAM 型(插入式驗證模組)驗證流程。
  • https://pas.windows.net:針對 Azure RBAC 流程。

Azure Government:

  • https://packages.microsoft.com:針對套件安裝和升級。
  • http://169.254.169.254:Azure 實例元數據服務端點。
  • https://login.microsoftonline.us:針對 PAM 型驗證流程。
  • https://pasff.usgovcloudapi.net:針對 Azure RBAC 流程。

由 21Vianet 營運的 Microsoft Azure:

  • https://packages.microsoft.com:針對套件安裝和升級。
  • http://169.254.169.254:Azure 實例元數據服務端點。
  • https://login.chinacloudapi.cn:針對 PAM 型驗證流程。
  • https://pas.chinacloudapi.cn:針對 Azure RBAC 流程。

虛擬機器

請確定您的 VM 已使用下列功能進行設定:

  • 系統指派的受控識別。 當您使用 Azure 入口網站 建立 VM 並選取 [Microsoft Entra 登入] 選項時,會自動選取此選項。 您也可以使用 Azure CLI,在新的或現有的 VM 上啟用系統指派的受控識別。
  • aadsshloginaadsshlogin-selinux (適當)。 這些套件會與 AADSSHLoginForLinux VM 延伸模組一起安裝。 當您使用 Azure 入口網站 或 Azure CLI 來建立 VM 並啟用 Microsoft Entra 登入 (管理] 索引標籤時,會安裝擴充功能。

用戶端

請確定您的用戶端符合下列需求:

  • SSH 用戶端支援 OpenSSH 型憑證以進行驗證。 您可以使用 Azure CLI(2.21.1 或更新版本)搭配 OpenSSH(隨附於 Windows 10 1803 版或更新版本)或 Azure Cloud Shell,以符合此需求。

  • Azure CLI 的 SSH 擴充功能。 您可以使用 來安裝此延伸模組 az extension add --name ssh。 當您使用 Azure Cloud Shell 時,您不需要安裝此擴充功能,因為它已預安裝。

    如果您使用 Azure CLI 或支援 OpenSSH 憑證的 Azure Cloud Shell 以外的任何 SSH 用戶端,您仍然需要搭配 SSH 擴充功能使用 Azure CLI 來擷取暫時的 SSH 憑證,以及選擇性地擷取組態檔。 然後,您可以將組態檔與 SSH 用戶端搭配使用。

  • 從用戶端到 VM 的公用或私人 IP 位址的 TCP 連線。 (ProxyCommand 或 SSH 轉送至具有連線能力的計算機也有效。

重要

以 PuTTY 為基礎的 SSH 用戶端現在支援 OpenSSH 憑證,而且可用來使用 Microsoft Entra OpenSSH 憑證型驗證登入。

在 Azure 中啟用 Linux VM 的 Microsoft Entra 登入

若要在 Azure 中使用 Linux VM 的 Microsoft Entra 登入,您必須先為 Linux VM 啟用 Microsoft Entra 登入選項。 接著,您可以為已獲授權登入 VM 的使用者設定 Azure 角色指派。 最後,您可以使用支援 OpenSSH 的 SSH 用戶端,例如 Azure CLI 或 Azure Cloud Shell,透過 SSH 連線到 Linux VM。

有兩種方式可為您的 Linux VM 啟用 Microsoft Entra 登入:

  • 建立 Linux VM 時的 Azure 入口網站 體驗
  • 當您建立 Linux VM 或使用現有 VM 時,Azure Cloud Shell 體驗

Azure 入口網站

您可以使用 Azure 入口網站,為任何支援的Linux發行版啟用 Microsoft Entra 登入。

例如,若要使用 Microsoft Entra 登入在 Azure 中建立 Ubuntu Server 18.04 長期支援 (LTS) VM:

  1. 使用可存取建立 VM 的帳戶登入 Azure 入口網站,然後選取 [+ 建立資源]。
  2. 在 [熱門] 檢視中,選取 [Ubuntu Server 18.04 LTS] 底下的 [建立]。
  3. 在 [ 管理] 索引標籤上:
    1. 選取 [ 使用 Microsoft Entra ID 登入] 複選框。
    2. 確定已 選取 [系統指派的受控識別] 複選框。
  4. 流覽建立虛擬機的其餘體驗。 您必須建立具有使用者名稱和密碼或 SSH 公鑰的系統管理員帳戶。

Azure Cloud Shell

Azure Cloud Shell 是免費的互動式殼層,可用來執行本文中的步驟。 常見的 Azure 工具會在 Cloud Shell 中預安裝並設定,以便您搭配您的帳戶使用。 只要選取 [ 複製] 按鈕即可複製程式代碼、將其貼到 Cloud Shell 中,然後選取 Enter 鍵以執行程式碼。

有幾種方式可以開啟 Cloud Shell:

  • 選取程式碼區塊右上角的 [試試看]。
  • 在您的瀏覽器中開啟 Cloud Shell。
  • 選取 Azure 入口網站右上角功能表中的 [Cloud Shell] 按鈕。

如果您選擇在本機安裝和使用 Azure CLI,本文會要求您使用 2.22.1 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組

  1. 執行 az group create 來建立資源群組。
  2. 執行 az vm create 建立 VM。 在支持的區域中使用支援的散發套件。
  3. 使用 az vm extension set 安裝 Microsoft Entra login VM 擴充功能

下列範例會部署 VM,然後安裝擴充功能,以啟用 Linux VM 的 Microsoft Entra 登入。 VM 擴充功能是小型應用程式,可在 Azure 虛擬機器 上提供部署後設定和自動化工作。 視需要自定義範例以支援您的測試需求。

az group create --name AzureADLinuxVM --location southcentralus
az vm create \
    --resource-group AzureADLinuxVM \
    --name myVM \	
    --image Ubuntu2204 \
    --assign-identity \
    --admin-username azureuser \
    --generate-ssh-keys
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADSSHLoginForLinux \
    --resource-group AzureADLinuxVM \
    --vm-name myVM

建立虛擬機器和支援資源需要幾分鐘的時間。

AADSSHLoginForLinux 擴充功能可以安裝在具有執行中 VM 代理程式的現有 Linux VM 上,以啟用 Microsoft Entra 驗證。 如果您要將此擴充功能部署到先前建立的 VM,VM 必須至少配置 1 GB 的記憶體,否則安裝將會失敗。

provisioningState VM 上成功安裝擴充功能時,會出現的值 Succeeded 。 VM 必須有執行 中的 VM 代理程式 才能安裝擴充功能。

設定 VM 的角色指派

既然您已建立 VM,您必須指派下列其中一個 Azure 角色,以判斷誰可以登入 VM。 若要指派這些角色,您必須具有虛擬機數據存取 管理員 istrator 角色,或任何包含Microsoft.Authorization/roleAssignments/write動作的角色,例如角色型 存取控制 管理員 istrator 角色。 不過,如果您使用與虛擬機數據存取 管理員 istrator 不同的角色,建議您新增條件以減少建立角色指派的許可權。

  • 虛擬機 管理員 istrator 登入:獲指派此角色的使用者可以使用系統管理員許可權登入 Azure 虛擬機。
  • 虛擬機使用者登入: 獲指派此角色的使用者可以使用一般使用者許可權登入 Azure 虛擬機。

若要允許使用者透過 SSH 登入 VM,您必須在包含 VM 及其相關聯虛擬網路、網路介面、公用 IP 位址或負載平衡器資源的資源群組上,指派虛擬機 管理員 istrator 登入或虛擬機使用者登入角色。

為 VM 指派擁有者或參與者角色的 Azure 使用者,不會透過 SSH 自動擁有 Microsoft Entra 登入 VM 的許可權。 這是為了在一組控制虛擬機器的人員與一組能夠存取虛擬機器的人員之間提供刻意 (且經過稽核) 的隔離。

有兩種方式可設定 VM 的角色指派:

  • Azure 入口網站 體驗
  • Azure Cloud Shell 體驗

注意

虛擬機 管理員 Istrator 登入和虛擬機使用者登入角色會使用 dataActions ,而且可以在管理群組、訂用帳戶、資源群組或資源範圍指派。 建議您在管理群組、訂用帳戶或資源群組層級指派角色,而不是在個別 VM 層級指派角色。 這種做法可避免每個訂用帳戶達到 Azure 角色指派限制 的風險。

Azure 入口網站

若要為已啟用 Microsoft Entra ID 的 Linux VM 設定角色指派:

  1. 針對 [ 資源群組],選取包含 VM 及其相關聯虛擬網路、網路介面、公用 IP 位址或負載平衡器資源的資源群組。

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [新增]> [新增角色指派],開啟 [新增角色指派] 頁面。

  4. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 虛擬機 管理員 istrator 登入虛擬機使用者登入
    存取權指派對象為 使用者、群組、服務主體或受控識別

    顯示新增角色指派頁面的螢幕快照。

在幾分鐘之後,即會在所選範圍中指派安全性主體的角色。

Azure Cloud Shell

下列範例會使用 az role assignment create 將虛擬機 管理員 istrator 登入角色指派給目前 Azure 使用者的 VM。 您可以使用 az account show 取得目前 Azure 帳戶的用戶名稱,並使用 az vm show 將範圍設定為在上一個步驟中建立的 VM。

您也可以在資源群組或訂用帳戶層級指派範圍。 適用於一般 Azure RBAC 繼承許可權。

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 來取得使用者帳戶的物件識別碼。

如需如何使用 Azure RBAC 來管理 Azure 訂用帳戶資源存取權的詳細資訊,請參閱 指派 Azure 角色的步驟。

安裝 Azure CLI 的 SSH 擴充功能

如果您使用 Azure Cloud Shell,則不需要其他設定,因為 Cloud Shell 環境中已包含 Azure CLI 的最低必要版本和 Azure CLI 的 SSH 擴充功能。

執行下列命令以新增 Azure CLI 的 SSH 擴充功能:

az extension add --name ssh

擴充功能所需的最低版本為 0.1.4。 使用下列命令檢查已安裝的版本:

az extension show --name ssh

強制執行條件式存取原則

您可以強制執行使用 Microsoft Entra 登入啟用的條件式存取原則,例如:

  • 需要多重要素驗證。
  • 針對執行 SSH 用戶端的裝置,要求符合規範或 Microsoft Entra 混合式已加入裝置。
  • 在授權存取 Azure 中的 Linux VM 之前檢查風險。

出現在條件式存取原則中的應用程式稱為 Azure Linux VM 登入

注意

條件式存取原則強制執行,需要在執行 SSH 用戶端的裝置上要求裝置合規性或 Microsoft Entra 混合式聯結,僅適用於在 Windows 和 macOS 上執行的 Azure CLI。 當您在 Linux 或 Azure Cloud Shell 上使用 Azure CLI 時,不支援它。

遺漏應用程式

如果條件式存取中遺漏 Azure Linux VM 登入應用程式,請確定應用程式不在租使用者中:

  1. 以至少雲端應用程式 管理員 istrator 身分登入 Microsoft Entra 系統管理中心
  2. 流覽至 [身分>識別應用程式企業應用程式]。>
  3. 拿掉篩選條件以查看所有應用程式,並搜尋 虛擬機。 如果您未看到 Microsoft Azure Linux 虛擬機登入,則租使用者缺少服務主體。

使用 Microsoft Entra 使用者帳戶登入 Linux VM

使用 Azure CLI 登入

輸入 az login。 此命令會開啟瀏覽器視窗,您可以在其中使用 Microsoft Entra 帳戶登入。

az login 

然後輸入 az ssh vm。 下列範例會自動解析 VM 的適當 IP 位址。

az ssh vm -n myVM -g AzureADLinuxVM

如果系統提示您,請在登入頁面上輸入您的 Microsoft Entra 登入認證、執行多重要素驗證和/或滿足裝置檢查。 只有在 Azure CLI 工作階段尚未符合任何必要的條件式存取準則時,才會提示您。 關閉瀏覽器視窗,返回 SSH 提示字元,並會自動連線到 VM。

您現在已使用已指派的角色許可權登入 Linux 虛擬機,例如 VM 使用者或 VM 管理員 istrator。 如果您的使用者帳戶已獲指派虛擬機 管理員 istrator 登入角色,您可以使用 sudo 來執行需要根許可權的命令。

使用 Azure Cloud Shell 登入

您可以使用 Azure Cloud Shell 連線到 VM,而不需要在本機將任何專案安裝到您的用戶端電腦。 選取 Azure 入口網站 右上角的殼層圖示,以啟動 Cloud Shell。

Cloud Shell 會自動連線到登入用戶內容中的會話。 現在再次執行 az login ,並瀏覽互動式登入流程:

az login

接著,您可以使用一般 az ssh vm 命令,透過 VM 的名稱和資源群組或 IP 位址進行連線:

az ssh vm -n myVM -g AzureADLinuxVM

注意

當您使用 Azure Cloud Shell 時,不支援需要裝置合規性或 Microsoft Entra 混合式聯結的條件式存取原則強制執行。

使用 Microsoft Entra 服務主體登入 Linux VM

Azure CLI 支援使用服務主體進行驗證,而不是用戶帳戶。 由於服務主體未系結至任何特定使用者,客戶可以使用它們透過SSH連線到 VM,以支持他們可能擁有的任何自動化案例。 服務主體必須已指派 VM 管理員 istrator 或 VM 用戶權力。 在訂用帳戶或資源群組層級指派許可權。

下列範例會將 VM 管理員 istrator 許可權指派給資源群組層級的服務主體。 取代服務主體對象標識碼、訂用帳戶標識碼和資源組名的佔位元。

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee-object-id <service-principal-objectid> \
    --assignee-principal-type ServicePrincipal \
    --scope "/subscriptions/<subscription-id>/resourceGroups/<resourcegroup-name>"

使用下列範例,使用服務主體向 Azure CLI 進行驗證。 如需詳細資訊,請參閱使用服務主體登入 Azure CLI 一文

az login --service-principal -u <sp-app-id> -p <password-or-cert> --tenant <tenant-id>

使用服務主體進行驗證完成時,請使用一般 Azure CLI SSH 命令來連線到 VM:

az ssh vm -n myVM -g AzureADLinuxVM

匯出 SSH 組態以搭配支援 OpenSSH 的 SSH 用戶端使用

使用 Microsoft Entra ID 登入 Azure Linux VM 支援導出 OpenSSH 憑證和設定。 這表示您可以使用任何支援 OpenSSH 型憑證的 SSH 用戶端,透過 Microsoft Entra ID 登入。 下列範例會匯出指派給 VM 之所有 IP 位址的設定:

az ssh config --file ~/.ssh/config -n myVM -g AzureADLinuxVM

或者,您可以只指定IP位址來匯出組態。 以 VM 的公用或私人 IP 位址取代下列範例中的 IP 位址。 (您必須為私人 IP 自備連線能力。輸入 az ssh config -h 以取得此命令的說明。

az ssh config --file ~/.ssh/config --ip 10.11.123.456

然後,您可以透過一般 OpenSSH 使用量連線到 VM。 連線 可以透過任何使用 OpenSSH 的 SSH 用戶端來完成。

使用 Microsoft Entra 登入執行 sudo

指派 VM 管理員 istrator 角色的使用者成功透過 SSH 連線到 Linux VM 之後,他們就能夠執行 sudo,而不需要其他互動或驗證需求。 獲指派 VM 使用者角色的使用者將無法執行 sudo。

連線 虛擬機擴展集中的 VM

支援虛擬機擴展集,但啟用和連線到虛擬機擴展集中的 VM 的步驟稍有不同:

  1. 建立虛擬機擴展集,或選擇已經存在的虛擬機擴展集。 為您的虛擬機器擴展集啟用系統指派的受控識別:

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. 在虛擬機擴展集上安裝 Microsoft Entra 擴充功能:

    az vmss extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group AzureADLinuxVM --vmss-name myVMSS
    

虛擬機擴展集通常沒有公用IP位址。 您必須能夠從可連線到其 Azure 虛擬網路的另一部電腦連線。 此範例示範如何使用虛擬機擴展集中 VM 的私人 IP,從相同虛擬網路中的電腦連線:

az ssh vm --ip 10.11.123.456

注意

您無法使用 --resource-group--name 參數自動判斷虛擬機擴展集 VM 的 IP 位址。

從先前的 (預覽) 版本移轉

如果您使用以裝置程式代碼流程為基礎的Linux舊版 Microsoft Entra 登入,請使用 Azure CLI 完成下列步驟:

  1. 卸載 VM 上的 AADLoginForLinux 擴充功能:

    az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
    

    注意

    如果 VM 上目前有任何 Microsoft Entra 使用者登入,擴充功能的卸載可能會失敗。 請確定所有使用者都先註銷。

  2. 在您的 VM 上啟用系統指派的受控識別:

    az vm identity assign -g myResourceGroup -n myVm
    
  3. 在 VM 上安裝 AADSSHLoginForLinux 擴充功能:

    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 原則

對登入問題進行疑難排解

使用下列各節來更正當您嘗試使用 Microsoft Entra 認證進行 SSH 時可能發生的常見錯誤。

無法從本機快取擷取令牌

如果您收到訊息,指出無法從本機快取擷取令牌,您必須再次執行 az login ,並經歷互動式登入流程。 檢閱有關使用 Azure Cloud Shell 登入的章節

拒絕存取:未指派 Azure 角色

如果您在 SSH 提示字元上看到「未指派 Azure 角色」錯誤,請確認您已為授與虛擬機 管理員 istrator 登入角色或虛擬機使用者登入角色的 VM 設定 Azure RBAC 原則。 如果您在 Azure 角色指派時遇到問題,請參閱針對 Azure RBAC 進行疑難解答一文

刪除舊的 (AADLoginForLinux) 擴充功能時發生問題

如果卸載腳本失敗,擴充功能可能會卡在轉換狀態中。 發生這種情況時,延伸模組可能會讓套件在移除期間卸載。 在這種情況下,最好手動卸載舊套件,然後嘗試執行 az vm extension delete 命令。

若要卸載舊套件:

  1. 以具有系統管理員許可權的本機使用者身分登入。
  2. 請確定沒有任何登入的 Microsoft Entra 使用者。 who -u呼叫 命令以查看登入的人員。 然後,針對先前命令回報的所有會話進程使用 sudo kill <pid>
  3. 執行 sudo apt remove --purge aadlogin (Ubuntu/Debian)、 sudo yum remove aadlogin (RHEL 或 CentOS),或 sudo zypper remove aadlogin (openSUSE 或 SLES)。
  4. 如果命令失敗,請嘗試停用腳本的低階工具:
    1. 若為 Ubuntu/Debian,請執行 sudo dpkg --purge aadlogin。 如果仍然因為腳本而失敗,請刪除 /var/lib/dpkg/info/aadlogin.prerm 檔案,然後再試一次。
    2. 若為其他所有專案,請執行 rpm -e --noscripts aadogin
  5. 針對封裝 aadlogin-selinux重複步驟 3-4。

延伸模組安裝錯誤

將 AADSSHLoginForLinux VM 擴充功能安裝到現有電腦可能會失敗,並出現下列其中一個已知錯誤碼。

非零結束代碼 22

如果您取得結束代碼 22,AADSSHLoginForLinux VM 擴充功能的狀態會顯示為 入口網站中的轉換

發生此失敗的原因是需要系統指派的受控識別。

解決方案是:

  1. 卸載失敗的擴充功能。
  2. 在 Azure VM 上啟用系統指派的受控識別。
  3. 再次執行擴充功能安裝命令。

非零結束代碼 23

如果您取得結束代碼 23,AADSSHLoginForLinux VM 擴充功能的狀態會顯示為 入口網站中的轉換

安裝較舊的 AADLoginForLinux VM 擴充功能時,就會發生此失敗。

解決方案是從 VM 卸載較舊的 AADLoginForLinux VM 擴充功能。 新的 AADSSHLoginForLinux VM 擴充功能的狀態將會變更為 入口網站中的布建成功

使用 HTTP Proxy 時安裝失敗

延伸模組需要 HTTP 連線才能安裝套件,並檢查系統身分識別是否存在。 它會在的內容 walinuxagent.service 中執行,而且需要變更,才能讓代理程式知道 Proxy 設定。 在目標計算機上開啟 /lib/systemd/system/walinuxagent.service 檔案,並在 之後 [Service]新增下列這一行:

[Service]
Environment="http_proxy=http://proxy.example.com:80/"
Environment="https_proxy=http://proxy.example.com:80/"
Environment="no_proxy=169.254.169.254"

重新啟動代理程式 (sudo systemctl restart walinuxagent)。 現在再試一次。

az ssh vm 命令失敗,KeyError access_token

az ssh vm如果命令失敗,您會使用過時的 Azure CLI 用戶端版本。

解決方案是將 Azure CLI 用戶端升級至 2.21.0 版或更新版本。

SSH 連線已關閉

當使用者使用 az login成功登入之後,透過連線至 VMaz ssh vm -ip <address>,或az ssh vm --name <vm_name> -g <resource_group>可能會因為「ip_address埠 22 關閉 <連線> 關閉」而失敗。

此錯誤的其中一個原因是使用者未指派給此 VM 範圍內的虛擬機 管理員 istrator 登入或虛擬機使用者登入角色。 在此情況下,解決方案是將使用者新增至此 VM 範圍內的其中一個 Azure RBAC 角色。

如果使用者處於必要的 Azure RBAC 角色,但 VM 上已停用系統指派的受控識別,也可能會發生此錯誤。 在此情況下,請執行下列動作:

  1. 在 VM 上啟用系統指派的受控識別。
  2. 在用戶嘗試使用 az ssh vm --ip <ip_address>連線之前,允許經過幾分鐘的時間。

虛擬機擴展集的 連線 問題

如果擴展集實例執行舊模型,具有虛擬機擴展集的 VM 連線可能會失敗。

將擴展集實例升級至最新的模型可能會解決問題,特別是安裝 Microsoft Entra Login 擴充功能之後尚未完成升級。 升級實例會將標準擴展集組態套用至個別實例。

sshd_config中的 AllowGroups 或 DenyGroups 語句會導致 Microsoft Entra 使用者第一次登入失敗

如果 sshd_config 包含 AllowGroupsDenyGroups 語句,則 Microsoft Entra 使用者的第一次登入會失敗。 如果用戶已經成功登入之後加入 語句,他們可以登入。

其中一個解決方案是從sshd_config移除 AllowGroupsDenyGroups 語句。

另一個解決方案是移至 AllowGroups sshd_config 中的 DenyGroupsmatch user段。 請確定比對範本會排除 Microsoft Entra 使用者。

嘗試從 Azure Shell 連線到 Linux Red Hat/Oracle/CentOS 7.X VM 時,收到拒絕許可權。

目標 VM 7.4 中的 OpenSSH 伺服器版本太舊。 版本與 OpenSSH 用戶端 8.8 版不相容。 如需詳細資訊,請參閱 RSA SHA256 憑證無法再運作

因應措施:

  • 在命令中az ssh vm 新增選項"PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • 在中/home/<user>/.ssh/config file新增 選項"PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"

"PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com"將 新增至用戶端組態檔。

Host *
PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com

下一步