Войдите на виртуальную машину Linux в Azure с помощью идентификатора Microsoft Entra и OpenSSH
Чтобы повысить безопасность виртуальных машин Linux в Azure, можно интегрировать с проверкой подлинности Microsoft Entra. Теперь вы можете использовать идентификатор Microsoft Entra в качестве основной платформы проверки подлинности и центра сертификации для SSH на виртуальной машине Linux с помощью идентификатора Microsoft Entra ID и проверки подлинности на основе сертификата OpenSSH. Эта функция позволяет организациям управлять доступом к виртуальным машинам с помощью управления доступом на основе ролей Azure (RBAC) и политик условного доступа.
В этой статье показано, как создать и настроить виртуальную машину 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 |
AlmaLinux | AlmaLinux 8, AlmaLinux 9 |
Debian | Debian 9, Debian 10, Debian 11, Debian 12 |
openSUSE | openSUSE Leap 42.3, openSUSE Leap 15.1+ |
Оракул | Oracle Linux 8, Oracle Linux 9 |
RedHat Enterprise Linux (RHEL) | RHEL 7.4 до RHEL 7.9, RHEL 8.3+, RHEL 9.0+ |
Скалистый | Роки 8, Роки 9 |
SUSE Linux Enterprise Server (SLES) | SLES 12, SLES 15.1+ |
Ubuntu | Ubuntu 16.04 в Ubuntu 24.04 |
В настоящее время для этой функции поддерживаются следующие регионы Azure:
- Глобальная служба Azure
- Azure для государственных организаций
- Microsoft Azure, управляемый 21Vianet
Использование расширения SSH для кластеров Azure CLI в Служба Azure Kubernetes (AKS) не поддерживается. Дополнительные сведения см. в разделе "Политики поддержки для AKS".
Если вы решили установить и использовать Azure CLI локально, он должен быть версии 2.22.1 или более поздней. Запустите az --version
, чтобы найти версию. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
Заметка
Эта функция также доступна для серверов с поддержкой Azure Arc.
Соответствие требованиям для входа с помощью идентификатора Microsoft Entra с помощью проверки подлинности на основе сертификата OpenSSH
Чтобы включить вход Microsoft Entra с помощью проверки подлинности на основе сертификата SSH для виртуальных машин Linux в Azure, обязательно выполните следующие требования к сети, виртуальной машине и клиенту (SSH).
Сеть
Конфигурация сети виртуальной машины должна разрешить исходящий доступ к следующим конечным точкам через TCP-порт 443.
Глобальная служба Azure:
https://packages.microsoft.com
: для установки и обновления пакетов.http://169.254.169.254
: конечная точка службы метаданных экземпляра Azure.https://login.microsoftonline.com
: для потоков проверки подлинности на основе PAM (подключаемых модулей проверки подлинности).https://pas.windows.net
: для потоков RBAC Azure.
Azure для государственных организаций:
https://packages.microsoft.com
: для установки и обновления пакетов.http://169.254.169.254
: конечная точка службы метаданных экземпляра Azure.https://login.microsoftonline.us
: для потоков проверки подлинности на основе PAM.https://pasff.usgovcloudapi.net
: для потоков RBAC Azure.
Microsoft Azure, управляемый 21Vianet:
https://packages.microsoft.com
: для установки и обновления пакетов.http://169.254.169.254
: конечная точка службы метаданных экземпляра Azure.https://login.chinacloudapi.cn
: для потоков проверки подлинности на основе PAM.https://pas.chinacloudapi.cn
: для потоков RBAC Azure.
Виртуальная машина
Убедитесь, что виртуальная машина настроена со следующими функциями:
- Назначаемое системой управляемое удостоверение. Этот параметр автоматически выбирается при использовании портал 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.
Tcp-подключение от клиента к общедоступному или частному IP-адресу виртуальной машины. (Прокси-command или 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, для SSH на виртуальной машине Linux.
Существует два способа включения входа Microsoft Entra для виртуальной машины Linux:
- Интерфейс портал Azure при создании виртуальной машины Linux
- Интерфейс Azure Cloud Shell при создании виртуальной машины Linux или использовании существующей виртуальной машины
портал Azure
Вы можете включить имя входа Microsoft Entra для любого поддерживаемого дистрибутива Linux с помощью портал Azure.
Например, чтобы создать виртуальную машину Ubuntu Server 18.04 для долгосрочной поддержки (LTS) в Azure с именем входа Microsoft Entra:
- Войдите в портал Azure с помощью учетной записи, которая имеет доступ к созданию виртуальных машин, а затем нажмите кнопку +Создать ресурс.
- Выберите "Создать" в разделе Ubuntu Server 18.04 LTS в популярном представлении.
- На вкладке "Управление" :
- Установите флажок "Вход" с идентификатором Microsoft Entra ID .
- Убедитесь, что установлен флажок управляемого удостоверения, назначаемого системой.
- Перейдите к остальной части опыта создания виртуальной машины. Вам потребуется создать учетную запись администратора с именем пользователя и паролем или открытым ключом SSH.
Azure Cloud Shell
Azure Cloud Shell — это бесплатная интерактивная оболочка, которую можно использовать для выполнения действий, описанных в этой статье. Общие средства Azure предварительно установлены и настроены в Cloud Shell для использования с учетной записью. Просто нажмите кнопку "Копировать ", чтобы скопировать код, вставьте его в Cloud Shell и нажмите клавишу ВВОД, чтобы запустить его.
Существует несколько способов открытия Cloud Shell:
- Выберите " Попробовать" в правом верхнем углу блока кода.
- Откройте Cloud Shell в браузере.
- Нажмите кнопку Cloud Shell в меню в правом верхнем углу портал Azure.
Если вы решили установить и использовать Azure CLI локально, в этой статье необходимо использовать версию 2.22.1 или более позднюю. Запустите az --version
, чтобы найти версию. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
- Создайте группу ресурсов, выполнив az group create.
- Создайте виртуальную машину, выполнив az vm create. Используйте поддерживаемое распределение в поддерживаемом регионе.
- Установите расширение виртуальной машины входа 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, чтобы определить, кто может войти в виртуальную машину. Чтобы назначить эти роли, необходимо иметь роль администратора доступа к данным виртуальной машины или любую роль, Microsoft.Authorization/roleAssignments/write
включающую действие, например роль администратора на основе ролей контроль доступа. Однако если вы используете другую роль, отличную от роли администратора доступа к данным виртуальной машины, рекомендуется добавить условие, чтобы уменьшить разрешение на создание назначений ролей.
- Имя входа администратора виртуальной машины: пользователи, которым назначена эта роль, могут войти на виртуальную машину Azure с правами администратора.
- Имя входа пользователя виртуальной машины: пользователи, которым назначена эта роль, могут войти в виртуальную машину Azure с обычными привилегиями пользователя.
Чтобы разрешить пользователю войти на виртуальную машину по протоколу SSH, необходимо назначить роль входа администратора виртуальной машины или имени пользователя виртуальной машины в группе ресурсов, содержащей виртуальную машину и связанную с ней виртуальную сеть, сетевой интерфейс, общедоступный IP-адрес или ресурсы подсистемы балансировки нагрузки.
Пользователь Azure, которому назначена роль владельца или участника для виртуальной машины, автоматически не имеет привилегий для входа в Microsoft Entra на виртуальную машину по протоколу SSH. Существует намеренное (и проверенное) разделение между набором людей, которые управляют виртуальными машинами и набором людей, которые могут получить доступ к виртуальным машинам.
Существует два способа настройки назначений ролей для виртуальной машины:
- интерфейс портал Azure
- Интерфейс Azure Cloud Shell
Заметка
Роли входа администратора виртуальной машины и имени входа dataActions
пользователя виртуальной машины могут быть назначены в группе управления, подписке, группе ресурсов или области ресурсов. Рекомендуется назначить роли на уровне группы управления, подписки или группы ресурсов, а не на отдельном уровне виртуальной машины. Эта практика позволяет избежать риска достижения ограничения назначений ролей Azure для каждой подписки.
портал Azure
Чтобы настроить назначения ролей для виртуальных машин Linux с поддержкой идентификатора Microsoft Entra, выполните следующие действия.
Для группы ресурсов выберите группу ресурсов, содержащую виртуальную машину и связанную с ней виртуальную сеть, сетевой интерфейс, общедоступный IP-адрес или ресурс подсистемы балансировки нагрузки.
Выберите элемент управления доступом (IAM).
Нажмите кнопку "Добавить назначение роли", чтобы открыть страницу "Добавить>назначение ролей".
Назначьте следующую роль. Подробные инструкции см. в статье "Назначение ролей Azure с помощью портал Azure".
Оправа Ценность Роль Имя входа администратора виртуальной машины или имя входа пользователя виртуальной машины Назначение доступа Пользователь, группа, субъект-служба или управляемое удостоверение
Через несколько минут субъект безопасности назначает роль в выбранной области.
Azure Cloud Shell
В следующем примере используется az role assignment create , чтобы назначить роль входа администратора виртуальной машины виртуальной машине для текущего пользователя 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 отсутствует в условном доступе, убедитесь, что приложение не находится в клиенте:
- Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений.
- Перейдите к приложениям Identity>Applications>Enterprise.
- Удалите фильтры для просмотра всех приложений и поиска виртуальной машины. Если вы не видите вход виртуальной машины 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.
Подключение к виртуальным машинам в масштабируемых наборах виртуальных машин
Масштабируемые наборы виртуальных машин поддерживаются, но шаги немного отличаются для включения и подключения к виртуальным машинам в масштабируемом наборе виртуальных машин.
Создайте масштабируемый набор виртуальных машин или выберите уже существующий. Включите управляемое удостоверение, назначаемое системой для масштабируемого набора виртуальных машин:
az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
Установите расширение 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:
Удалите расширение AADLoginForLinux на виртуальной машине:
az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
Заметка
Удаление расширения может завершиться ошибкой, если на виртуальной машине вошли какие-либо пользователи Microsoft Entra. Сначала убедитесь, что все пользователи выошли из системы.
Включите назначаемое системой управляемое удостоверение на виртуальной машине:
az vm identity assign -g myResourceGroup -n myVm
Установите расширение 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
команду.
Чтобы удалить старые пакеты, выполните приведенные далее действия.
- Войдите в систему в качестве локального пользователя с правами администратора.
- Убедитесь, что пользователи Microsoft Entra не вошли в систему.
who -u
Вызовите команду, чтобы узнать, кто вошел в систему. Затем используйтеsudo kill <pid>
для всех процессов сеанса, которые сообщила предыдущая команда. - Запустите
sudo apt remove --purge aadlogin
(Ubuntu/Debian),sudo yum remove aadlogin
(RHEL) или (openSUSE илиsudo zypper remove aadlogin
SLES). - Если команда завершается ошибкой, попробуйте использовать низкоуровневые средства с отключенными скриптами:
- Для Ubuntu/Debian выполните команду
sudo dpkg --purge aadlogin
. Если он по-прежнему завершается ошибкой из-за скрипта, удалите/var/lib/dpkg/info/aadlogin.prerm
файл и повторите попытку. - Для всего остального выполните команду
rpm -e --noscripts aadogin
.
- Для Ubuntu/Debian выполните команду
- Повторите шаги 3-4 для пакета
aadlogin-selinux
.
Ошибки установки расширения
Установка расширения виртуальной машины AADSSHLoginForLinux на существующие компьютеры может завершиться ошибкой с одним из следующих известных кодов ошибок.
Код выхода, отличный от нуля 22
Если вы получаете код выхода 22, состояние расширения виртуальной машины AADSSHLoginForLinux отображается как переход на портале.
Это происходит из-за необходимости управляемого удостоверения, назначаемого системой.
Решение состоит в том, чтобы:
- Удалите неудаемое расширение.
- Включите управляемое удостоверение, назначаемое системой, на виртуальной машине Azure.
- Снова запустите команду установки расширения.
Код выхода, отличный от нуля 23
Если вы получаете код выхода 23, состояние расширения виртуальной машины AADSSHLoginForLinux отображается как переход на портале.
Эта ошибка возникает при установке более старого расширения виртуальной машины AADLoginForLinux.
Решение заключается в удалении старого расширения виртуальной машины AADLoginForLinux из виртуальной машины. Состояние нового расширения виртуальной машины AADSSHLoginForLinux изменится на подготовку на портале.
Сбои установки при использовании прокси-сервера HTTP
Расширение должно иметь 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>
сбой подключения с параметром "Подключение закрыто через <порт ip_address> 22".
Одна из причин этой ошибки заключается в том, что пользователь не назначен роли входа администратора виртуальной машины или имени входа пользователя виртуальной машины в пределах этой виртуальной машины. В этом случае решение заключается в добавлении пользователя в одну из этих ролей Azure RBAC в пределах этой виртуальной машины.
Эта ошибка также может произойти, если пользователь находится в обязательной роли Azure RBAC, но назначаемое системой управляемое удостоверение было отключено на виртуальной машине. В этом случае выполните следующие действия:
- Включите управляемое удостоверение, назначаемое системой, на виртуальной машине.
- Разрешите несколько минут, прежде чем пользователь пытается подключиться с помощью
az ssh vm --ip <ip_address>
.
Проблемы с подключением к масштабируемым наборам виртуальных машин
Подключения виртуальных машин с масштабируемыми наборами виртуальных машин могут завершиться ошибкой, если экземпляры масштабируемого набора выполняют старую модель.
Обновление экземпляров масштабируемого набора до последней модели может устранить проблему, особенно если обновление не было выполнено с момента установки расширения входа Microsoft Entra. Обновление экземпляра применяет стандартную конфигурацию масштабируемого набора к отдельному экземпляру.
Инструкции AllowGroups или DenyGroups в sshd_config приводят к сбою первого входа для пользователей Microsoft Entra
Если sshd_config содержит либо AllowGroups
DenyGroups
операторы, первый вход завершается ошибкой для пользователей Microsoft Entra. Если инструкция была добавлена после того, как пользователи уже имели успешное имя входа, они могут войти в систему.
Одним из решений является удаление и DenyGroups
инструкции AllowGroups
из sshd_config.
Другим решением является перемещение и DenyGroups
переход AllowGroups
к разделу match user
в sshd_config. Убедитесь, что шаблон соответствия исключает пользователей Microsoft Entra.
Получение разрешения запрещено при попытке подключиться из Azure Shell к виртуальной машине Linux Red Hat/Oracle 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