Microsoft Entra ID と OpenSSH を使用して Azure の Linux 仮想マシンにサインインする

注意事項

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

Azure の Linux 仮想マシン (VM) のセキュリティを強化するために、Microsoft Entra の認証と統合できます。 コア認証プラットフォームと証明機関として Microsoft Entra ID を使用し、Microsoft Entra ID および OpenSSH 証明書ベースの認証によって Linux VM に SSH 接続できるようになりました。 この機能により、組織は、Azure ロールベースのアクセス制御 (RBAC) ポリシーと条件付きアクセス ポリシーを使用して、VM へのアクセスを管理できます。

この記事では、OpenSSH 証明書ベースの認証を使用して Linux VM を作成および構成し、Microsoft Entra ID でログインする方法について説明します。

Microsoft Entra ID と OpenSSH による証明書ベースの認証を使用して Azure の Linux VM にサインインすると、セキュリティ上、次のような数多くの利点があります。 具体的な内容を次に示します。

  • Microsoft Entra 資格情報を使用して、Azure Linux VM にサインインできます。
  • SSH キーをユーザーに配布したり、デプロイする Azure Linux VM で SSH 公開キーをプロビジョニングしたりする必要なく、SSH キー ベースの認証を取得します。 このエクスペリエンスは、未認可のアクセスの原因となる可能性がある古い SSH 公開キーの無秩序な広がりについて心配しなければならないことよりもはるかに単純です。
  • ローカル管理者アカウントへの依存、資格情報の盗難、脆弱な資格情報を削減します。
  • Microsoft Entra ID のパスワードの複雑さとパスワードの有効期間ポリシーを構成することによって、Linux VM のセキュリティが向上します。
  • RBAC で、通常のユーザーとして、または管理者特権を使用して VM にサインインできるユーザーを指定できます。 ユーザーがチームに参加する場合は、適切なアクセス権が付与されるよう VM の Azure RBAC ポリシーを更新できます。 従業員が退職し、そのユーザー アカウントが無効化または Microsoft Entra ID から削除されると、リソースにアクセスできなくなります。
  • 条件付きアクセスを使用して、Linux VM に SSH 接続する前に、多要素認証を要求したり、クライアント デバイスをマネージド (準拠デバイスや Microsoft Entra ハイブリッド参加済みデバイスなど) にすることを要求したりするポリシーを構成します。
  • Azure のデプロイおよび監査ポリシーを使用して Linux VM への Microsoft Entra ログインを要求し、承認されていないローカル アカウントにフラグを設定します。

Microsoft Entra ID による Linux VM へのサインインは、Active Directory フェデレーション サービス (AD FS) を使用するお客様にも機能します。

サポートされている Linux ディストリビューションと Azure リージョン

サポート対象リージョンでは現在、次の Linux ディストリビューションのデプロイがサポートされています。

Distribution Version
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
Red Hat 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 Global
  • Azure Government
  • 21Vianet によって運営される Microsoft Azure

Azure Kubernetes Service (AKS) クラスターでの Azure CLI 用 SSH 拡張機能の使用はサポートされていません。 詳細については、AKS のポリシーのサポートに関するページを参照してください。

Azure CLI をローカルにインストールして使用する場合は、Azure CLI バージョン 2.22.1 以降である必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。

Note

この機能は、Azure Arc 対応サーバーでも使用できます。

OpenSSH 証明書ベースの認証を使用した Microsoft Entra ID によるログインの要件を満たす

Azure の Linux VM に対して SSH 証明書ベースの認証を使用した Microsoft Entra ログインを有効にするには、次のネットワーク、仮想マシン、クライアント (SSH クライアント) の要件を満たす必要があります。

ネットワーク

VM ネットワーク構成では、TCP ポート 443 経由の次のエンドポイントへの発信アクセスが許可されている必要があります。

Azure Global:

  • https://packages.microsoft.com: パッケージのインストールとアップグレード用。
  • http://169.254.169.254: Azure Instance Metadata Service エンドポイント。
  • https://login.microsoftonline.com: PAM ベース (プラグ可能な認証モジュール) の認証フロー用。
  • https://pas.windows.net: Azure RBAC フロー用。

Azure Government:

  • https://packages.microsoft.com: パッケージのインストールとアップグレード用。
  • http://169.254.169.254: Azure Instance Metadata Service エンドポイント。
  • https://login.microsoftonline.us: PAM ベースの認証フロー用。
  • https://pasff.usgovcloudapi.net: Azure RBAC フロー用。

21Vianet によって運営される Microsoft Azure:

  • https://packages.microsoft.com: パッケージのインストールとアップグレード用。
  • http://169.254.169.254: Azure Instance Metadata Service エンドポイント。
  • https://login.chinacloudapi.cn: PAM ベースの認証フロー用。
  • https://pas.chinacloudapi.cn: Azure RBAC フロー用。

仮想マシン

次の機能で VM が構成されていることを確認します。

  • システム割り当てマネージド ID。 Azure portal を使用して VM を作成し、Microsoft Entra ログイン オプションを選択すると、このオプションが自動的に選択されます。 Azure CLI を使用して、新規または既存の VM でシステム割り当てマネージド ID を有効にすることもできます。
  • aadsshlogin および aadsshlogin-selinux (必要に応じて)。 これらのパッケージは、AADSSHLoginForLinux VM 拡張機能によってインストールされます。 この拡張機能は、Azure portal または 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 を使用している場合、この拡張機能はプレインストールされているため、インストールする必要はありません。

    OpenSSH 証明書をサポートする Azure CLI または Azure Cloud Shell 以外の SSH クライアントを使用している場合でも、SSH 拡張機能を備えた Azure CLI を使用して、エフェメラル SSH 証明書と必要に応じて構成ファイルを取得する必要があります。 その構成ファイルを SSH クライアントで使用することができます。

  • クライアントから VM のパブリックまたはプライベート IP アドレスへの TCP 接続。 (接続可能なマシンへの SSH 転送または ProxyCommand も機能します。)

重要

PuTTY に基づく SSH クライアントで OpenSSH 証明書がサポートされるようになり、Microsoft Entra OpenSSH 証明書ベースの認証でのログインに使用できるようになりました。

Azure 内の Linux VM に対して Microsoft Entra ログインを有効にする

Azure 内の Linux VM に Microsoft Entra ログインを使用するには、最初にお使いの Linux VM で Microsoft Entra ログイン オプションを有効にする必要があります。 次に、VM へのサインインが許可されているユーザーに対して Azure ロールの割り当てを構成します。 最後に、Azure CLI や Azure Cloud Shell など、OpenSSH をサポートする SSH クライアントを使用して Linux VM に SSH 接続します。

Linux VM で Microsoft Entra ログインを有効にするには、次の 2 つの方法があります。

  • Linux VM の作成時の Azure portal エクスペリエンス
  • Linux VM の作成時または既存の VM の使用時の Azure Cloud Shell エクスペリエンス

Azure Portal

Azure portal を使用して、サポートされている Linux ディストリビューションのいずれかに対して Microsoft Entra ログインを有効にできます。

たとえば、Microsoft Entra ログインによって、Azure に Ubuntu Server 18.04 長期サポート (LTS) VM を作成するには、次の手順を行います。

  1. VM を作成するためのアクセス権を持つアカウントを使用して Azure portal にサインし、[+ リソースの作成] を選択します。
  2. [人気順] ビューの [Ubuntu Server 18.04 LTS] の下の [作成] を選びます。
  3. [管理] タブで、
    1. [Microsoft Entra ID でログイン] チェックボックスをオンにします。
    2. [システム割り当てマネージド ID] チェック ボックスがオンになっていることを確認します。
  4. 仮想マシンの作成エクスペリエンスの残りの部分に移動します。 ユーザー名とパスワードまたは SSH 公開キーで管理者アカウントを作成する必要があります。

Azure Cloud Shell

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 Cloud Shell には一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。 [コピー] ボタンを選択してコードをコピーし、Cloud Shell に貼り付けて Enter キーを押すだけで、コードを実行することができます。

Cloud Shell は、次のようにいくつかの方法で開くことができます。

  • コード ブロックの右上隅にある [使ってみる] を選択します。
  • ブラウザーで Cloud Shell を開きます。
  • Azure portal の右上隅にあるメニューの [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 ログイン VM 拡張機能をインストールします。

次の例では、VM をデプロイし、拡張機能をインストールして、Linux VM に対する Microsoft Entra ログインを有効にします。 VM 拡張機能は、Azure Virtual Machines でのデプロイ後の構成と自動タスクを提供する小さなアプリケーションです。 テスト要件をサポートするように、必要に応じてこの例をカスタマイズしてください。

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

VM とサポートするリソースを作成するには数分かかります。

AADSSHLoginForLinux 拡張機能は、実行中の VM エージェントによって、既存の (サポートされているディストリビューション) Linux VM にインストールして、Microsoft Entra 認証を有効にすることができます。 以前に作成した VM にこの拡張機能をデプロイする場合、VM には少なくとも 1 GB のメモリが割り当てられている必要があります。割り当てられていない場合、インストールは失敗します。

拡張機能が VM に正常にインストールされると、Succeeded という provisioningState 値が表示されます。 拡張機能をインストールするには、VM に実行中の VM エージェントが必要です。

仮想マシン ロールの割り当てを構成する

VM を作成したので、VM にサインインできるユーザーを決定するため、次のいずれかの Azure ロールを割り当てる必要があります。 これらのロールを割り当てるには、仮想マシン データ アクセス管理者ロールか、Microsoft.Authorization/roleAssignments/write アクションが含まれるロール (ロールベース アクセス制御管理者ロールなど) が必要です。 ただし、仮想マシン データ アクセス管理者以外のロールを使用している場合、ロールの割り当てを作成するアクセス許可を減らす条件を追加することをお勧めします。

  • 仮想マシンの管理者ログイン: このロールを割り当てられたユーザーは、管理者特権を持つユーザーとして Azure 仮想マシンにサインインできます。
  • 仮想マシンのユーザー ログイン: このロールが割り当てられたユーザーは、正規ユーザーの特権を持つユーザーとして Azure 仮想マシンにサインインできます。

ユーザーが SSH を介して VM にサインインできるようにするには、VM とそれに関連付けられた仮想ネットワーク、ネットワーク インターフェイス、パブリック IP アドレス、またはロード バランサー リソースを含むリソース グループに仮想マシン管理者ログインまたは仮想マシン ユーザー ログインのいずれかのロールを割り当てる必要があります。

VM の所有者または共同作成者のロールが割り当てられた Azure ユーザーには、SSH を介して Microsoft Entra で VM にサインインする権限は自動的に付与されません。 これは、仮想マシンを管理するユーザーと仮想マシンにアクセスできるユーザーを意図的に (なおかつ監査上) 分離するためです。

VM のロールの割り当てを構成するには、次の 2 つの方法があります。

  • Azure portal での操作
  • Azure Cloud Shell エクスペリエンス

注意

仮想マシンの管理者ログインおよび仮想マシンのユーザー ログインのロールでは dataActions を使用し、管理グループ、サブスクリプション、リソース グループ、またはリソースのスコープで割り当てることができます。 ロールの割り当ては、個々の VM レベルにではなく、管理グループ、サブスクリプション、またはリソースのグループ レベルで行なうことをお勧めします。 サブスクリプションあたりの Azure ロール割り当ての上限を超えるリスクの防止策になります。

Azure Portal

Microsoft Entra ID 対応 Linux VM のロールの割り当てを構成するには:

  1. [リソース グループ] で、VM とそれに関連付けられている仮想ネットワーク、ネットワーク インターフェイス、パブリック IP アドレス、またはロード バランサー リソースを含むリソース グループを選びます。

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。

  4. 次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

    設定
    Role [仮想マシンの管理者ログイン] または [仮想マシンのユーザー ログイン]
    アクセスの割り当て先 ユーザー、グループ、サービス プリンシパル、またはマネージド ID

    ロールの割り当てを追加するためのページを示すスクリーンショット。

しばらくすると、セキュリティ プリンシパルに選択されたスコープのロールが割り当てられます。

Azure Cloud Shell

次の例では、az role assignment create を使用し、現在の Azure ユーザーに対して、VM に対する仮想マシンの管理者ログイン ロールを割り当てます。 現在の Azure アカウントのユーザー名を az account show で取得し、スコープは、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

Note

Microsoft Entra ドメインとログイン ユーザー名ドメインが一致しない場合は、--assignee のユーザー名だけでなく、--assignee-object-id を使用してユーザー アカウントのオブジェクト ID を指定する必要があります。 ユーザー アカウントのオブジェクト ID は、az ad user list を使用して取得できます。

Azure RBAC を使用して、Azure サブスクリプション リソースへのアクセスを管理する方法の詳細については、「Azure ロールを割り当てる手順」を参照してください。

Azure CLI 用 SSH 拡張機能をインストールする

Azure Cloud Shell を使用している場合は、Azure CLI の最低限必要なバージョンと Azure CLI 用 SSH 拡張機能の両方が既に Cloud Shell 環境に含まれているため、他のセットアップは必要ありません。

次のコマンドを実行して、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 Sign-In" という名前です。

Note

SSH クライアントを実行しているデバイスに対して準拠デバイスまたは Microsoft Entra ハイブリッド参加済みデバイスを要求する条件付きアクセス ポリシーの適用は、Windows および macOS で実行されている Azure CLI でのみ機能します。 Linux や Azure Cloud Shell から Azure CLI を使用している場合はサポートされません。

アプリケーションが見つかりません

Azure Linux VM サインイン アプリケーションが条件付きアクセスに含まれていない場合は、アプリケーションがテナントに存在しないことを確認します。

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
  2. [ID]>[アプリケーション]>[エンタープライズ アプリケーション] の順に移動します。
  3. フィルターを削除してすべてのアプリケーションを表示し、仮想マシンを検索します。 結果に Microsoft Azure Linux 仮想マシン サインインが表示されない場合は、テナントにサービス プリンシパルは含まれていません。

Microsoft Entra ユーザー アカウントを使用して Linux VM に SSH 接続し、ログインする

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 に自動的に接続されます。

これで、VM ユーザーや VM 管理者などのロールのアクセス許可が割り当てられた Linux 仮想マシンにサインインしました。 自分のユーザー アカウントに仮想マシンの管理者ログイン ロールが割り当てられている場合は、sudo を使用してルート権限を必要とするコマンドを実行できます。

Azure Cloud Shell を使用してログインする

クライアント コンピューターにローカルに何もインストールする必要なく、Azure Cloud Shell を使用して VM に接続できます。 Azure portal の右上隅にあるシェル アイコンを選択して、Cloud Shell を起動します。

Cloud Shell によって、サインイン済みユーザーのコンテキストでセッションに自動的に接続します。 再度 az login を実行し、対話型サインイン フローを実行します。

az login

それにより、通常の az ssh vm コマンドを実行して、VM の名前とリソース グループまたは IP アドレスを使用して接続できます。

az ssh vm -n myVM -g AzureADLinuxVM

Note

Azure Cloud Shell を使用する場合は、準拠デバイスまたは Microsoft Entra ハイブリッド参加済みデバイスを要求する条件付きアクセス ポリシーの適用はサポートされません。

Microsoft Entra サービス プリンシパルを使用して SSH 接続し、Linux VM にログインする

Azure CLI では、ユーザー アカウントではなく、サービス プリンシパルによる認証がサポートされています。 サービス プリンシパルは特定のユーザーに関連付けられていないため、お客様は、それらを使用して、VM に SSH 接続して、目的の自動化シナリオをサポートできます。 サービス プリンシパルには、VM 管理者または VM ユーザー権限が割り当てられている必要があります。 サブスクリプションまたはリソース グループ レベルでアクセス許可を割り当てます。

次の例では、リソース グループ レベルで、サービス プリンシパルに VM 管理者権限を割り当てます。 プレースホルダーは、実際のサービス プリンシパル オブジェクト ID、サブスクリプション ID、リソース グループ名に置き換えてください。

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

OpenSSH をサポートする SSH クライアントで使用するための 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 アドレスだけを指定して、構成をエクスポートすることもできます。 次の例の IP アドレスをお使いの VM のパブリックまたはプライベート 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 管理者ロールが割り当てられたユーザーが、Linux VM への SSH 接続に成功すると、他の操作や認証要件なしで sudo を実行できるようになります。 VM ユーザー ロールが割り当てられたユーザーは sudo を実行できません。

仮想マシン スケール セット内の VM に接続する

仮想マシン スケール セットはサポートされていますが、仮想マシン スケールセット内の VM の有効化と接続の手順は若干異なります。

  1. 仮想マシン スケール セットを作成するか、既に存在するものを選択します。 Azure 仮想マシン スケール セットのシステム割り当てマネージド ID を有効にします。

    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

Note

--resource-group および --name スイッチを使用して、仮想マシン スケール セット VM の IP アドレスを自動的に決定することはできません。

以前の (プレビュー) バージョンから移行する

デバイス コード フローに基づいた以前のバージョンの Linux 用 Microsoft Entra ログインを使用している場合は、Azure CLI を使用して次の手順を実行してください。

  1. VM の AADLoginForLinux 拡張機能をアンインストールします。

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

    Note

    VM に現在ログインしている Microsoft Entra ユーザーがいる場合、拡張機能のアンインストールは失敗する可能性があります。 すべてのユーザーが最初にログアウトするようにしてください。

  2. VM でシステム割り当てマネージド ID を有効にします。

    az vm identity assign -g myResourceGroup -n myVm
    
  3. VM に AADLoginForLinux 拡張機能をインストールします。

    az vm extension set \
        --publisher Microsoft.Azure.ActiveDirectory \
        --name AADSSHLoginForLinux \
        --resource-group myResourceGroup \
        --vm-name myVM
    

Azure Policy を使用して、標準および評価コンプライアンスを満たす

Azure Policy を使用して次のことを行います。

  • 新規および既存の Linux 仮想マシンに対して Microsoft Entra ログインを有効にする。
  • コンプライアンス ダッシュボードで環境のコンプライアンスを大規模に評価する。

この機能により、さまざまなレベルの適用を使用できます。 Microsoft Entra ログインが有効になっていない環境内の新規および既存の Linux VM にフラグを設定できます。 さらに、Azure Policy を使用して、Microsoft Entra ログインが有効になっていない新しい Linux VM に Microsoft Entra 拡張機能をデプロイできるほか、既存の Linux VM を同じ標準に修復することもできます。

これらの機能に加え、Azure Policy を使用して、承認されていないローカル アカウントが作成されている Linux VM を検出してフラグを設定することもできます。 詳細については、Azure Policy に関するページを確認してください。

サインアップに関する問題のトラブルシューティング

Microsoft Entra の資格情報を使用して SSH 接続しようとしたときによく発生するエラーは、以降のセクションを使用して解決してください。

ローカル キャッシュからトークンを取得できない

トークンをローカル キャッシュから取得できないというメッセージが表示された場合は、もう一度 az login を実行し、対話型サインイン フローを実行する必要があります。 Azure Cloud Shell を使用したログインに関するセクションを参照してください。

アクセスが拒否されました:Azure ロールが割り当てられていません

SSH プロンプトで "Azure ロールが割り当てられていない" という内容のエラーが表示された場合は、仮想マシンの管理者ログイン ロールまたは仮想マシンのユーザー ログイン ロールのいずれかをユーザーに付与する 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 または Deian の場合、sudo dpkg --purge aadlogin を実行します。 スクリプトが理由でまだ失敗する場合は、/var/lib/dpkg/info/aadlogin.prerm ファイルを削除して、再度試してください。
    2. 他のすべての場合は、rpm -e --noscripts aadogin を実行します。
  5. パッケージ aadlogin-selinux に対して手順 3 から 4 を繰り返します。

拡張機能のインストール エラー

既存のコンピューターへの AADSSHLoginForLinux VM 拡張機能のインストールが、次のいずれかの既知のエラー コードで失敗する場合があります。

ゼロ以外の終了コード 22

終了コード 22 が返される場合、ADSSHLoginForLinux VM 拡張機能の状態が "移行中" と表示されます。

このエラーは、システム割り当てマネージド ID が必要であるために発生します。

解決策は次のとおりです。

  1. 失敗した拡張機能をアンインストールします。
  2. Azure VM でシステム割り当てマネージド ID を有効にします。
  3. 拡張機能のインストール コマンドを再度実行します。

ゼロ以外の終了コード 23

終了コード 23 が返される場合、ADSSHLoginForLinux VM 拡張機能の状態が "移行中" と表示されます。

このエラーは、古い AADLoginForLinux VM 拡張機能がまだインストールされていると発生します。

VM から古い AADLoginForLinux VM 拡張機能をアンインストールすることが解決策となります。 ポータルで、新しい AADSSHLoginForLinux VM 拡張機能の状態が、"プロビジョニング成功" に変わります。

HTTP プロキシを使用するときのインストールの失敗

この拡張機能では、パッケージをインストールし、システム ID の存在を確認するために HTTP 接続が必要です。 これは walinuxagent.service のコンテキストで実行され、エージェントがプロキシ設定について知ることができるようにするための変更を必要とします。 ターゲット マシンで /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 で失敗する

古いバージョンの Azure CLI クライアントを使用していると az ssh vm コマンドが失敗します。

Azure CLI クライアントをバージョン 2.21.0 以降にアップグレードすることが解決策となります。

SSH 接続が閉じられる

ユーザーが az login を使用して正常にサインインした後、az ssh vm -ip <address> または az ssh vm --name <vm_name> -g <resource_group> を使用した VM への接続が、" <ip_address> ポート 22 によって接続が閉じられました" で失敗する場合があります。

このエラーの原因の 1 つは、ユーザーが、この VM のスコープ内で仮想マシンの管理者ログインと仮想マシンのユーザー ログインのいずれのロールにも割り当てられていないことです。 その場合は、この VM のスコープ内で、そのどちらかの Azure RBAC ロールにユーザーを追加することが解決策となります。

また、このエラーは、必要な Azure RBAC ロールにユーザーが含まれているものの、その VM でシステム割り当てマネージド ID が無効になっている場合にも発生します。 その場合は、次のアクションを実行します。

  1. VM でシステム割り当てマネージド ID を有効にします。
  2. 数分待ってから、az ssh vm --ip <ip_address> を使用して接続を試みます。

仮想マシン スケール セットの接続に関する問題

仮想マシン スケール セット インスタンスで古いモデルが実行されている場合、スケール セットの VM 接続が失敗することがあります。

特に Microsoft Entra ログイン拡張機能のインストール後アップグレードが実行されていなかった場合、スケール セット インスタンスを最新のモデルにアップグレードすると、問題が解決する可能性があります。 インスタンスをアップグレードすると、標準のスケール セット構成が個々のインスタンスに適用されます。

sshd_config に AllowGroups ステートメントまたは DenyGroups ステートメントが含まれていると、Microsoft Entra ユーザーの最初のサインインが失敗する

AllowGroupsDenyGroups のいずれかのステートメントが sshd_config に含まれている場合、Microsoft Entra ユーザーによる最初のログインは失敗します。 ステートメントが追加されたのが、既にユーザーがログインに成功した後であった場合はログイン可能です。

解決策の 1 つは、AllowGroupsDenyGroups ステートメントを sshd_config から削除することです。

もう 1 つの解決策は、AllowGroupsDenyGroupssshd_configmatch 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

次のステップ