Войдите на виртуальную машину Linux в Azure с помощью идентификатора Microsoft Entra и OpenSSH

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

Чтобы повысить безопасность виртуальных машин Linux в Azure, можно интегрировать с проверкой подлинности Microsoft Entra. Теперь вы можете использовать идентификатор Microsoft Entra в качестве основной платформы проверки подлинности и центра сертификации для SSH на виртуальной машине Linux с помощью идентификатора Microsoft Entra ID и проверки подлинности на основе сертификата OpenSSH. Эта функция позволяет организациям управлять доступом к виртуальным машинам с помощью управления на основе ролей (RBAC) Azure и политик условного доступа.

В этой статье показано, как создать и настроить виртуальную машину Linux и войти в систему с помощью идентификатора Microsoft Entra с помощью проверки подлинности на основе сертификата OpenSSH.

Существует множество преимуществ безопасности использования идентификатора Microsoft Entra с проверкой подлинности на основе сертификата OpenSSH для входа на виртуальные машины Linux в Azure. К ним относятся:

  • Используйте учетные данные Microsoft Entra для входа на виртуальные машины Linux Azure.
  • Получите проверку подлинности на основе ключей SSH без необходимости распределения ключей SSH среди пользователей или подготовки открытых ключей SSH на каждой развертываемой виртуальной машине Linux Azure. Этот процесс гораздо проще — не придется беспокоиться о разрастании устаревших открытых ключей SSH, которое может привести к несанкционированному доступу.
  • Уменьшите зависимость от учетных записей локальных администраторов, кражи учетных данных и слабых учетных данных.
  • Помогите защитить виртуальные машины Linux, настроив политики сложности паролей и времени существования пароля для идентификатора Microsoft Entra.
  • С помощью RBAC укажите, кто может войти в виртуальную машину в качестве обычного пользователя или с правами администратора. По мере присоединения пользователей к вашей группе можно обновлять политику Azure RBAC для виртуальной машины, предоставляя соответствующий доступ. Когда сотрудники покидают вашу организацию и их учетные записи пользователей, отключаются или удаляются из идентификатора Microsoft Entra, они больше не имеют доступа к ресурсам.
  • С помощью условного доступа настройте политики, чтобы требовать многофакторную проверку подлинности или требовать, чтобы клиентское устройство управляло (например, совместимое или гибридное присоединение к Microsoft Entra), прежде чем использовать его SSH на виртуальных машинах Linux.
  • Используйте политики развертывания и аудита Azure, чтобы требовать имя входа Microsoft Entra для виртуальных машин Linux и помечайте неутвержденные локальные учетные записи.

Вход на виртуальные машины Linux с помощью идентификатора Microsoft Entra работает для клиентов, использующих службы федерации Active Directory (AD FS).

Поддерживаемые дистрибутивы Linux и регионы Azure

В настоящее время для развертываний в поддерживаемом регионе поддерживаются следующие дистрибутивы Linux:

Распределение Версия
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 Ubuntu Server 16.04 на Ubuntu Server 22.04, все дополнительные версии после Ubuntu 22.04

Пока эту функцию поддерживают следующие регионы Azure:

  • Глобальная служба Azure
  • Azure для государственных организаций
  • Microsoft Azure под управлением 21Vianet

Использование расширения SSH для кластеров Azure CLI в Служба Azure Kubernetes (AKS) не поддерживается. Дополнительные сведения см. в статье Политики поддержки AKS.

Если вы решили установить и использовать Azure CLI локально, вам потребуется Azure CLI версии 2.22.1 или более поздней версии. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, обратитесь к статье Установка Azure CLI.

Примечание.

Эта функция также доступна для серверов с поддержкой Azure Arc.

Соответствие требованиям для входа с помощью идентификатора Microsoft Entra с помощью проверки подлинности на основе сертификата OpenSSH

Чтобы включить вход Microsoft Entra с помощью проверки подлинности на основе сертификата SSH для виртуальных машин Linux в Azure, обязательно выполните следующие требования к сети, виртуальной машине и клиенту (SSH).

Network

Конфигурация сети виртуальных машин должна разрешать исходящий доступ к следующим конечным точкам через 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 для государственных организаций:

  • https://packages.microsoft.com — для установки пакета и обновлений.
  • http://169.254.169.254 — конечная точка Службы метаданных экземпляров Azure.
  • https://login.microsoftonline.us — для потоков проверки подлинности на основе PAM.
  • https://pasff.usgovcloudapi.net — для потоков Azure RBAC.

Microsoft Azure, управляемый 21Vianet:

  • https://packages.microsoft.com — для установки пакета и обновлений.
  • http://169.254.169.254 — конечная точка Службы метаданных экземпляров Azure.
  • https://login.chinacloudapi.cn — для потоков проверки подлинности на основе PAM.
  • https://pas.chinacloudapi.cn — для потоков Azure RBAC.

Виртуальная машина

Убедитесь, что для виртуальной машины настроены следующие функциональные возможности.

  • Управляемое удостоверение, назначаемое системой Этот параметр автоматически выбирается при использовании портал Azure для создания виртуальных машин и выбора параметра входа Microsoft Entra. Управляемое удостоверение, назначаемое системой, можно также включить на новой или существующей виртуальной машине с помощью Azure CLI.
  • aadsshlogin и aadsshlogin-selinux (по мере необходимости). Эти пакеты устанавливаются с расширением виртуальной машины AADSSHLoginForLinux. Расширение устанавливается при использовании портал Azure или Azure CLI для создания виртуальных машин и включения входа Microsoft Entra (вкладка "Управление").

Клиент

Убедитесь, что ваш клиент соответствует следующим требованиям.

  • Клиент SSH должен поддерживать сертификаты на основе OpenSSH для проверки подлинности. Azure CLI (2.21.1 или более поздней версии) можно использовать с OpenSSH (включенной в Windows 10 версии 1803 или более поздней) или Azure Cloud Shell для удовлетворения этого требования.

  • Расширение SSH для Azure CLI. Вы можете установить это расширение с помощью az extension add --name ssh. При использовании Azure Cloud Shell это расширение устанавливать не нужно, так как оно предустановлено.

    Если вы используете другой клиент SSH, отличный от Azure CLI или Azure Cloud Shell, который поддерживает сертификаты OpenSSH, все равно потребуется применить Azure CLI с расширением SSH для получения временного SSH-сертификата и (необязательно) файла конфигурации. Лишь затем вы сможете использовать файл конфигурации с другим клиентом SSH.

  • Возможность подключения клиента к общедоступному или частному IP-адресу виртуальной машины по протоколу TCP. (Также поддерживается переадресация по ProxyCommand или SSH на компьютер с возможностью подключения.)

Внимание

Клиенты SSH на основе PuTTY теперь поддерживают сертификаты OpenSSH и могут использоваться для входа с помощью проверки подлинности на основе сертификата На основе сертификата Microsoft Entra OpenSSH.

Включение входа Microsoft Entra для виртуальной машины Linux в Azure

Чтобы использовать имя входа Microsoft Entra для виртуальной машины Linux в Azure, сначала необходимо включить параметр входа Microsoft Entra для виртуальной машины Linux. Затем вы настроите назначения ролей Azure для пользователей, которым разрешено войти на виртуальную машину. И наконец, вы можете использовать клиент SSH, который поддерживает OpenSSH, например Azure CLI или Azure Cloud Shell, для подключения виртуальной машины Linux по SSH.

Существует два способа включения входа Microsoft Entra для виртуальной машины Linux:

  • интерфейс портала Azure при создании виртуальной машины Linux;
  • интерфейс Azure Cloud Shell при создании виртуальной машины Linux или при использовании существующей виртуальной машины.

Портал Azure

Вы можете включить имя входа Microsoft Entra для любого поддерживаемого дистрибутива Linux с помощью портал Azure.

Например, чтобы создать виртуальную машину Ubuntu Server 18.04 для долгосрочной поддержки (LTS) в Azure с именем входа Microsoft Entra:

  1. Войдите в портал Azure с помощью учетной записи, которая имеет доступ к созданию виртуальных машин, а затем нажмите кнопку +Создать ресурс.
  2. В представлении Популярные в разделе Ubuntu Server 18.04 LTS выберите Создать.
  3. На вкладке "Управление" :
    1. Выберите имя входа с идентификатором Microsoft Entra ID проверка box.
    2. Убедитесь, что установлен флажок Управляемое удостоверение, назначаемое системой.
  4. Выполните оставшиеся действия процесса создания виртуальной машины. Вам нужно будет создать административную учетную запись с именем пользователя и паролем или открытым ключом SSH.

Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. В Cloud Shell предварительно установлены и настроены общие инструменты Azure для использования с вашей учетной записью. Нажмите кнопку Копировать, чтобы скопировать код. Вставьте его в Cloud Shell и нажмите клавишу "ВВОД", чтобы выполнить код.

Cloud Shell можно открыть разными способами:

  • Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.
  • Откройте Cloud Shell в браузере.
  • Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure.

Если вы решили установить и использовать интерфейс командной строки Azure локально, для работы с этой статьей вам понадобится Azure CLI 2.22.1 или более поздней версии. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, обратитесь к статье Установка Azure CLI.

  1. Создайте группу ресурсов, выполнив команду az group create.
  2. Создайте виртуальную машину, выполнив команду az vm create. Используйте поддерживаемое распределение в поддерживаемом регионе.
  3. Установите расширение виртуальной машины входа Microsoft Entra с помощью az vm extension set.

В следующем примере развертывается виртуальная машина, а затем устанавливается расширение для включения входа Microsoft Entra для виртуальной машины Linux. Расширения виртуальных машин — это небольшие приложения, которые предоставляют задачи конфигурации после развертывания и автоматизации в 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 можно установить на существующей (поддерживаемой дистрибутивной) виртуальной машине Linux с помощью работающего агента виртуальной машины, чтобы включить проверку подлинности Microsoft Entra. При развертывании этого расширения на ранее созданной виртуальной машине убедитесь в том, что на ней выделено не менее 1 ГБ памяти, иначе установка выполнена не будет.

Значение provisioningState параметра Succeeded отображается после успешной установки расширения на виртуальной машине. Для установки расширения на виртуальной машине должен работать агент виртуальных машин.

Настройка назначений ролей для виртуальной машины

Теперь, когда вы создали виртуальную машину, необходимо назначить одну из следующих ролей Azure, чтобы определить, кто может войти в виртуальную машину. Чтобы назначить эти роли, необходимо иметь роль доступа к данным виртуальной машины Администратор istrator или любую роль, Microsoft.Authorization/roleAssignments/write включающую действие, например роль контроль доступа Администратор istrator на основе ролей. Однако если вы используете другую роль, отличную от роли доступа к данным виртуальных машин Администратор istrator, рекомендуется добавить условие, чтобы уменьшить разрешение на создание назначений ролей.

  • Имя входа виртуальной машины Администратор istrator: пользователи, которым назначена эта роль, могут войти на виртуальную машину Azure с правами администратора.
  • Имя входа пользователя виртуальной машины: пользователи, которым назначена эта роль, могут войти в виртуальную машину Azure с обычными привилегиями пользователя.

Чтобы разрешить пользователю войти на виртуальную машину через SSH, необходимо назначить роль входа виртуальной машины Администратор istrator или имени входа пользователя виртуальной машины в группе ресурсов, содержащей виртуальную машину и связанную с ней виртуальную сеть, сетевой интерфейс, общедоступный IP-адрес или ресурсы подсистемы балансировки нагрузки.

Пользователь Azure, которому назначена роль владельца или участника для виртуальной машины, автоматически не имеет привилегий для входа в Microsoft Entra на виртуальную машину по протоколу SSH. Это позволяет обеспечить преднамеренное и прошедшее аудит разделение между пользователями, управляющими виртуальными машинами, и пользователями с доступом к виртуальным машинам.

Доступно два способа настройки назначений ролей для виртуальной машины:

  • Взаимодействие с порталом Azure
  • интерфейс Azure Cloud Shell.

Примечание.

Роль входа администратора виртуальной машины и роль входа пользователя виртуальной машины использует dataActions, и эти роли можно назначать на уровне группы управления, подписки, группы ресурсов или ресурса. Рекомендуется назначить роли на уровне группы управления, подписки или группы ресурсов, а не на отдельном уровне виртуальной машины. Эта практика позволяет предотвратить достижение ограничения при назначении ролей Azure для каждой подписки.

Портал Azure

Чтобы настроить назначения ролей для виртуальных машин Linux с поддержкой идентификатора Microsoft Entra, выполните следующие действия.

  1. Выберите группу ресурсов, содержащую виртуальную машину и связанную с ней виртуальную сеть, сетевой интерфейс, общедоступный IP-адрес или ресурс подсистемы балансировки нагрузки.

  2. Выберите Управление доступом (IAM) .

  3. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.

  4. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Параметр Значение
    Роль Имя для входа администратора виртуальной машины или Имя для входа пользователя виртуальной машины
    Назначить доступ для Пользователь, группа, субъект-служба или управляемое удостоверение

    Снимок экрана: страница добавления назначения ролей.

Через несколько секунд субъекту безопасности будет назначена роль в выбранной области.

Azure Cloud Shell

В следующем примере используется az role assignment create, чтобы назначить роль входа виртуальной машины Администратор istrator виртуальной машине для текущего пользователя Azure. Имя пользователя текущей учетной записи Azure можно получить с помощью команды az account show. В качестве области задается виртуальная машина, созданная на предыдущем шаге с помощью команды az vm show.

Вы также можете назначить область на уровне группы ресурсов или подписки. Применяются обычные разрешения наследования 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.

Установка расширения SSH для Azure CLI

Если вы используете Azure Cloud Shell, другие настройки не требуются, так как минимальная требуемая версия Azure CLI и расширение SSH для Azure CLI уже включены в среду Cloud Shell.

Выполните следующую команду, чтобы добавить расширение SSH для Azure CLI:

az extension add --name ssh

Минимальная необходимая версия расширения — 0.1.4. Проверьте установленную версию с помощью следующей команды.

az extension show --name ssh

Принудительные политики условного доступа

Вы можете применить политики условного доступа, включенные с помощью имени входа Microsoft Entra, например:

  • Требование многофакторной проверки подлинности.
  • Требование соответствия требованиям или гибридного устройства Microsoft Entra для устройства под управлением клиента SSH.
  • Проверка рисков перед авторизацией доступа к виртуальным машинам Linux в Azure.

Приложение в политике условного доступа называется Вход на виртуальную машину Linux Azure.

Примечание.

Принудительное применение политики условного доступа, требующее соответствия устройств или гибридного соединения Microsoft Entra на устройстве, на котором запущен клиент SSH, работает только с Azure CLI, работающей в Windows и macOS. Оно не поддерживается при использовании Azure CLI в Linux или Azure Cloud Shell.

Отсутствует приложение

Если приложение "Вход на виртуальную машину Linux Azure" не включено в условный доступ, убедитесь, что приложение отсутствует в арендаторе:

  1. Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
  2. Перейдите к приложениям Identity>Applications>Enterprise.
  3. Удалите фильтры для просмотра всех приложений и поиска виртуальной машины. Если вы не видите вход виртуальной машины Microsoft Azure Linux в результате, субъект-служба отсутствует в клиенте.

Войдите с помощью учетной записи пользователя Microsoft Entra в SSH на виртуальную машину Linux

Вход с помощью Azure CLI

Введите az login. Эта команда открывает окно браузера, в котором можно войти с помощью учетной записи Microsoft Entra.

az login 

Затем введите az ssh vm. В следующем примере автоматически разрешается соответствующий IP-адрес для виртуальной машины.

az ssh vm -n myVM -g AzureADLinuxVM

Если появится запрос, введите учетные данные входа Microsoft Entra на странице входа, выполните многофакторную проверку подлинности и /или выполните проверка устройства. Вам будет предложено только в том случае, если сеанс Azure CLI еще не соответствует необходимым критериям условного доступа. Закройте окно браузера, вернитесь в командную строку SSH, и вы будете автоматически подключены к виртуальной машине.

Теперь вы выполнили вход на виртуальную машину под управлением Linux с разрешениями назначенных ролей, таких как пользователь виртуальной машины или администратор виртуальной машины. Если вашей учетной записи пользователя назначена роль "Имя для входа администратора виртуальной машины", то вы можете использовать sudo для выполнения команд, требующих прав привилегированного пользователя.

Вход с помощью Azure Cloud Shell

Вы можете использовать Azure Cloud Shell для подключения к виртуальным машинам без установки каких-либо локальных компонентов на клиентский компьютер. Запустите Cloud Shell, щелкнув значок оболочки в правом верхнем углу на портале Azure.

Cloud Shell будет автоматически подключаться к сеансу в контексте пользователя, выполнившего вход. Необходимо снова выполнить команду az login и пройти процедуру интерактивного входа.

az login

Затем можно использовать обычные команды az ssh vm для подключения с помощью имени и группы ресурсов или IP-адреса виртуальной машины.

az ssh vm -n myVM -g AzureADLinuxVM

Примечание.

Принудительное применение политики условного доступа, требующее соответствия устройств или гибридного соединения Microsoft Entra, не поддерживается при использовании Azure Cloud Shell.

Войдите с помощью субъекта-службы Microsoft Entra в SSH на виртуальную машину Linux

Azure CLI поддерживает проверку подлинности с помощью субъекта-службы вместо учетной записи пользователя. Так как субъекты-службы — это учетные записи, не привязанные к какому-либо конкретному пользователю, клиенты могут использовать их для подключения к виртуальной машине по SSH для поддержки любых существующих сценариев автоматизации. Субъект-служба должен иметь назначенные права администратора виртуальной машины или пользователя виртуальной машины. Назначьте разрешения на уровне подписки или группы ресурсов.

В следующем примере субъекту-службе назначаются права администратора виртуальной машины на уровне группы ресурсов. Замените заполнители на идентификатор объекта субъекта-службы, идентификатор подписки и имя группы ресурсов.

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>

После завершения проверки подлинности с помощью субъекта-службы используйте обычные команды SSH Azure CLI для подключения к виртуальной машине:

az ssh vm -n myVM -g AzureADLinuxVM

Экспорт конфигурации SSH для использования с клиентами SSH, поддерживающими OpenSSH

Вход на виртуальные машины Linux в Azure с помощью идентификатора Microsoft Entra поддерживает экспорт сертификата и конфигурации OpenSSH. Это означает, что вы можете использовать любые клиенты SSH, поддерживающие сертификаты на основе OpenSSH для входа с помощью идентификатора Microsoft Entra. В следующем примере выполняется экспорт конфигурации для всех IP-адресов, назначенных виртуальной машине.

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

Вы также можете экспортировать конфигурацию, указав только IP-адрес. Замените IP-адрес в следующем примере на общедоступный или частный IP-адрес виртуальной машины. (Необходимо использовать собственную возможность подключения для частных IP-адресов.) Введите az ssh config -h, чтобы отобразить справку по этой команде.

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

Затем можно подключиться к виртуальной машине, используя OpenSSH, как обычно. Подключение можно выполнять через любой клиент SSH, использующий OpenSSH.

Запуск sudo с помощью имени входа Microsoft Entra

После того как пользователь с назначенной ролью администратора виртуальной машины успешно выполняет SSH-вход на виртуальную машину Linux, он может запускать sudo без выполнения каких-либо других требований к взаимодействию или проверке подлинности. Пользователи, которым назначена роль пользователя виртуальной машины, не смогут запускать sudo.

Подключение к виртуальным машинам в масштабируемых наборах виртуальных машин

Масштабируемые наборы виртуальных машин поддерживаются, но действия по включению и подключению к виртуальным машинам масштабируемого набора виртуальных машин несколько отличаются.

  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. В этом примере демонстрируется использование частного IP-адреса масштабируемого набора виртуальных машин для подключения с компьютера в той же виртуальной сети.

az ssh vm --ip 10.11.123.456

Примечание.

Невозможно автоматически определить IP-адреса виртуальных машин в масштабируемом наборе виртуальных машин с помощью параметров --resource-group и --name.

Миграция из предыдущей (предварительной) версии

Если вы используете предыдущую версию входа Microsoft Entra для Linux, которая была основана на потоке кода устройства, выполните следующие действия с помощью Azure CLI:

  1. Удалите расширение AADLoginForLinux на виртуальной машине.

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

    Примечание.

    Удаление расширения может завершиться ошибкой, если на виртуальной машине вошли какие-либо пользователи Microsoft Entra. Сначала убедитесь, что все пользователи вышли из системы.

  2. Включите на своей виртуальной машине управляемое удостоверение, назначаемое системой.

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Установите на виртуальную машину расширение AADSSHLoginForLinux.

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

Использование Политики Azure для соответствия нормативным требованиям и стандартам

Использовать политику Azure для следующих целей:

  • Убедитесь, что для новых и существующих виртуальных машин Linux включен вход Microsoft Entra.
  • Оцените соответствие вашей среды в большом масштабе с помощью панели мониторинга соответствия требованиям.

Эта возможность обеспечивает множество уровней применения. Вы можете пометить новые и существующие виртуальные машины Linux в вашей среде, не включаемые в систему Microsoft Entra. Кроме того, можно использовать Политика Azure для развертывания расширения Microsoft Entra на новых виртуальных машинах Linux, не имеющих включенного входа в Систему Microsoft Entra, а также для исправления существующих виртуальных машин Linux в том же стандарте.

Помимо этих возможностей, с помощью Политики Azure вы можете обнаруживать и помечать виртуальные машины Linux, на которых существуют неутвержденные локальные учетные записи. Дополнительные сведения см. в разделе о Политике Azure.

Устранение неполадок при входе

Используйте следующие разделы, чтобы исправить распространенные ошибки, которые могут возникать при попытке SSH с учетными данными Microsoft Entra.

Не удалось получить токен из локального кэша

Если вы получите сообщение о том, что маркер не удалось получить из локального кэша, необходимо выполнить az login снова и пройти интерактивную процедуру входа. Ознакомьтесь с разделом, где содержится описание входа с помощью Azure Cloud Shell.

Доступ запрещен: не назначена роль Azure

Если в запросе SSH отображается сообщение об ошибке "Не назначена роль Azure", проверьте, есть ли у вас настроенные политики 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. Повторите шаги 3–4 для пакета aadlogin-selinux.

Сбой установки расширения

Установка расширения виртуальной машины AADSSHLoginForLinux на существующие компьютеры завершается неудачно с одним из следующих известных кодов ошибок.

Ненулевой код выхода 22

Если отображается код 22, состояние расширения виртуальной машины AADSSHLoginForLinux показывается на портале как Переходное.

Этот сбой происходит, поскольку требуется управляемое удостоверение, назначаемое системой.

Решение предполагает выполнение следующих действий:

  1. Удалите неисправное расширение.
  2. Включите на виртуальной машине Azure управляемое удостоверение, назначаемое системой.
  3. Снова выполните команду установки расширения.

Ненулевой код выхода: 23

Если отображается код 23, состояние расширения виртуальной машины AADSSHLoginForLinux показывается на портале как Переходное.

Эта ошибка вызвана тем, что еще существует установленное более старое расширение виртуальной машины AADLoginForLinux.

Чтобы решить проблему, удалите старое расширение виртуальной машины AADLoginForLinux с виртуальной машины. Состояние нового расширения виртуальной машины AADLoginForLinux на портале изменится на Подготовка успешно завершена.

Сбои установки при использовании прокси-сервера 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.

Если команда az ssh vm завершается сбоем, используется устаревшая версия клиента Azure CLI.

Чтобы решить эту проблему, обновите клиент Azure CLI до версии 2.21.0 или более поздней версии.

Соединение SSH закрыто

После успешного входа пользователя с использованием az login, подключение к виртуальной машине с помощью az ssh vm -ip <address> или az ssh vm --name <vm_name> -g <resource_group> может завершиться сбоем с сообщением об ошибке "Подключение закрыто портом 22 <ip_address>".

Одна из причин этой ошибки заключается в том, что пользователю не назначена роль входа администратора виртуальной машины или роль входа пользователя виртуальной машины в области этой виртуальной машины. В этом случае решение заключается в добавлении пользователя в одну из этих ролей Azure RBAC в области данной виртуальной машины.

Эта ошибка также может возникать, если пользователю назначена необходимая роль Azure RBAC, но на виртуальной машине отключено управляемое удостоверение, назначаемое системой. В этом случае выполните следующие действия:

  1. Включите на этой виртуальной машине управляемое удостоверение, назначаемое системой.
  2. Подождите несколько минут, прежде чем пользователь попытается подключиться с помощью az ssh vm --ip <ip_address>.

Проблемы с подключением к масштабируемым наборам виртуальных машин

Подключения к виртуальным машинам из масштабируемого набора виртуальных машин могут завершаться сбоем, если в экземплярах масштабируемого набора виртуальных машин запущена старая модель.

Обновление экземпляров масштабируемого набора до последней модели может устранить проблему, особенно если обновление не было выполнено с момента установки расширения входа Microsoft Entra. Обновление экземпляра применяет стандартную конфигурацию масштабируемого набора к отдельному экземпляру.

Инструкции AllowGroups или DenyGroups в sshd_config приводят к сбою первого входа для пользователей Microsoft Entra

Если sshd_config содержит либоAllowGroupsDenyGroups операторы, первый вход завершается ошибкой для пользователей Microsoft Entra. Если инструкция добавлена после успешного входа пользователя, он сможет войти в систему.

Одним из решений является удаление операторов AllowGroups и DenyGroups из sshd_config.

Другим решением является перемещение AllowGroups и DenyGroups в раздел match user в sshd_config. Убедитесь, что шаблон соответствия исключает пользователей Microsoft Entra.

Получение разрешения запрещено при попытке подключиться из Azure Shell к виртуальной машине Linux Red Hat/Oracle/CentOS 7.X.

Версия сервера OpenSSH в целевой виртуальной машине 7.4 слишком старая. Версия несовместима с клиентом OpenSSH версии 8.8. Дополнительные сведения см. в сертификатах RSA SHA256.

Решение:

  • Параметр "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" добавления в az ssh vm команду.
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Добавление параметра "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" в элементе /home/<user>/.ssh/config file.

Добавьте его "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" в файл конфигурации клиента.

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

Следующие шаги