Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширение VMAccess используется для управления администраторами, настройки SSH и проверки или восстановления дисков на виртуальных машинах Linux Azure. Расширение интегрируется с шаблонами Azure Resource Manager. Его также можно вызвать с помощью Azure CLI, Azure PowerShell, порталa Azure и REST API Azure виртуальных машин.
В этой статье описывается, как запустить расширение VMAccess из Azure CLI и с помощью шаблона Azure Resource Manager. В этой статье также показаны шаги по устранению неполадок в системах Linux.
Замечание
Если вы используете расширение VMAccess для сброса пароля виртуальной машины после установки расширения входа Microsoft Entra, повторно запустите расширение входа Microsoft Entra, чтобы повторно включить имя входа Microsoft Entra для виртуальной машины.
Предпосылки
Поддерживаемые дистрибутивы Linux
Дистрибутив Linux | x64 | ARM64 |
---|---|---|
AlmaLinux | 9.x+ | 9.x+ |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Не поддерживается |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Не поддерживается |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+ | 8.6+, 9.0+ |
Рокки Linux | 9.x+ | 9.x+ |
SLES | 12.x+, 15.x+ | 15.x с пакетом обновления 4 (SP4) |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
Советы
- VMAccess предназначен для восстановления доступа к виртуальной машине с учетом потери доступа. На основе этого принципа она предоставляет разрешение sudo учетной записи, указанной в поле имени пользователя. Если вы не хотите, чтобы пользователь мог получить разрешения sudo, войдите на виртуальную машину и используйте встроенные средства (например, usermod, chage и т. д.) для управления непривилегированных пользователей.
- К виртуальной машине может применяться только одна версия расширения. Чтобы выполнить второе действие, обновите существующее расширение с новой конфигурацией.
- Во время обновления пользователя VMAccess изменяет
sshd_config
файл и заранее создает резервную копию. Он изменяетChallengeResponseAuthentication
наno
иPasswordAuthentication
наyes
. Чтобы восстановить исходную резервную конфигурацию SSH, запустите VMAccess сrestore_backup_ssh
, установленным наTrue
.
Схема расширения
Конфигурация расширения VMAccess включает параметры для имени пользователя, паролей, ключей SSH и т. д. Эти сведения можно хранить в файлах конфигурации, указать его в командной строке или включить в шаблон Azure Resource Manager (ARM). Следующая схема JSON содержит все свойства, доступные для использования в общедоступных и защищенных параметрах.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "<name>",
"apiVersion": "2023-09-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "VMAccessForLinux",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"check_disk": true,
"repair_disk": false,
"disk_name": "<disk-name>",
},
"protectedSettings": {
"username": "<username>",
"password": "<password>",
"ssh_key": "<ssh-key>",
"reset_ssh": false,
"remove_user": "<username>",
"expiration": "<expiration>",
"remove_prior_keys": false,
"restore_backup_ssh": true
}
}
}
Значения свойств
Имя | Значение и пример | Тип данных |
---|---|---|
apiVersion | 2023-09-01 | дата |
издатель | Microsoft.OSTCExtensions | струна |
тип | VMAccessForLinux | струна |
версияТипаОбработчика | 1.5 | инт |
Задание значений свойств
Имя | Тип данных | Описание |
---|---|---|
проверка диска | булевый | Нужно ли проверять диск (по желанию)? Только один между check_disk и repair_disk может иметь значение true. |
ремонт_диска | булевый | Нужно ли проверять диск (по желанию)? Только один между check_disk и repair_disk может иметь значение true. |
имя_диска | струна | Имя диска для восстановления (требуется, если repair_disk имеет значение true). |
имя пользователя | струна | Имя пользователя для управления (требуется для всех действий в учетной записи пользователя). |
пароль | струна | Пароль, заданный для учетной записи пользователя. |
ssh_key | струна | Открытый ключ SSH, добавляемый для учетной записи пользователя. Ключ SSH может быть в формате ssh-rsa , ssh-ed25519 или .pem . |
reset_ssh | булевый | Стоит ли сбросить SSH? Если true он заменяет файл sshd_config внутренним файлом ресурсов, соответствующим конфигурации SSH по умолчанию для этого дистрибутива. |
удалить пользователя | струна | Имя удаляемого пользователя. Нельзя использовать с reset_ssh , restore_backup_ssh и password . |
истечение | струна | Срок действия, заданный для учетной записи, в виде yyyy-mm-dd . По умолчанию установлено значение 'никогда'. |
удалить_предыдущие_ключи | булевый | Следует ли удалять старые ключи SSH при добавлении нового. Необходимо использовать с ssh_key . |
восстановить_резервную_копию_ssh | булевый | Следует ли восстановить исходную резервную копию sshd_config. |
Развертывание шаблона
Расширения виртуальных машин Azure можно развернуть с помощью шаблонов Azure Resource Manager (ARM). Схему JSON, описанную в предыдущем разделе, можно использовать в шаблоне ARM для запуска расширения VMAccess во время развертывания шаблона. Пример шаблона, который включает расширение VMAccess на сайте GitHub.
Файл конфигурации JSON для расширения виртуальной машины должен быть вложен во фрагмент ресурса виртуальной машины в шаблоне, в частности в объект "resources": []
для шаблона виртуальной машины или в объект "virtualMachineProfile":"extensionProfile":{"extensions" :[]
, если используется масштабируемый набор виртуальных машин.
Развертывание с помощью Azure CLI
Использование команд пользователей виртуальной машины Azure CLI
Следующие команды CLI в az vm user используют расширение VMAccess. Чтобы использовать эти команды, необходимо установить последнюю версию Azure CLI и войти в учетную запись Azure с помощью az login.
Обновление ключа SSH
В следующем примере обновляется ключ SSH для пользователя azureUser
на виртуальной машине с именем myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Замечание
Команда az vm user update
добавляет новый текст открытого ключа в ~/.ssh/authorized_keys
файл для пользователя администратора на виртуальной машине. Эта команда не заменяет или не удаляет существующие ключи SSH. Эта команда не удаляет предыдущие ключи, заданные во время развертывания, или последующие обновления с помощью расширения VMAccess.
Введите новый пароль
В следующем примере сбрасывается пароль для пользователя azureUser
на виртуальной машине с именем myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
Перезапуск SSH
В следующем примере программа SSH перезапускается и сбрасывает конфигурацию SSH до значений по умолчанию на виртуальной машине с именем myVM
:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Замечание
Командаaz vm user reset-ssh
заменяет файл sshd_config файлом конфигурации по умолчанию из каталога внутренних ресурсов. Эта команда не восстанавливает исходную конфигурацию SSH, найденную на виртуальной машине.
Создание пользователя с правами администратора или sudo
В следующем примере создается пользователь myNewUser
с разрешениями sudo. Учетная запись использует ключ SSH для проверки подлинности на виртуальной машине с именем myVM
. Этот метод помогает восстановить доступ к виртуальной машине при потере или забытии текущих учетных данных. Рекомендуется ограничить учетные записи с разрешениями sudo.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Удаление пользователя
В следующем примере удаляется пользователь с именем myNewUser
на виртуальной машине с именем myVM
:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Использование команд расширения Azure CLI для виртуальных машин и масштабируемых групп виртуальных машин (VM/VMSS)
Вы также можете использовать команду az vm extension set и az vmss extension set для запуска расширения VMAccess с указанной конфигурацией.
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--settings '{"check_disk":true}'
--protected-settings '{"username":"user1","password":"userPassword"}'
--settings
и --protected-settings
параметры также принимают пути к файлам JSON. Например, чтобы обновить открытый ключ SSH пользователя, создайте JSON-файл с именем update_ssh_key.json
и добавьте параметры в следующем формате. Замените значения в файле собственными сведениями:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
Запустите расширение VMAccess с помощью следующей команды:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--protected-settings update_ssh_key.json
Развертывание с помощью Azure PowerShell
Azure PowerShell можно использовать для развертывания расширения VMAccess в существующей виртуальной машине или масштабируемом наборе виртуальных машин. Расширение можно развернуть на виртуальной машине, выполнив следующую команду:
$username = "<username>"
$sshKey = "<cert-contents>"
$settings = @{"check_disk" = $true};
$protectedSettings = @{"username" = $username; "ssh_key" = $sshKey};
Set-AzVMExtension -ResourceGroupName "<resource-group>" `
-VMName "<vm-name>" `
-Location "<location>" `
-Publisher "Microsoft.OSTCExtensions" `
-ExtensionType "VMAccessForLinux" `
-Name "VMAccessForLinux" `
-TypeHandlerVersion "1.5" `
-Settings $settings `
-ProtectedSettings $protectedSettings
Кроме того, можно указать и изменить параметры расширения с помощью строк:
$username = "<username>"
$sshKey = "<cert-contents>"
$settingsString = '{"check_disk":true}';
$protectedSettingsString = '{"username":"' + $username + '","ssh_key":"' + $sshKey + '"}';
Set-AzVMExtension -ResourceGroupName "<resource-group>" `
-VMName "<vm-name>" `
-Location "<location>" `
-Publisher "Microsoft.OSTCExtensions" `
-ExtensionType "VMAccessForLinux" `
-Name "VMAccessForLinux" `
-TypeHandlerVersion "1.5" `
-SettingString $settingsString `
-ProtectedSettingString $protectedSettingsString
Чтобы развернуть в масштабируемом наборе виртуальных машин, выполните следующую команду:
$resourceGroupName = "<resource-group>"
$vmssName = "<vmss-name>"
$protectedSettings = @{
"username" = "azureUser"
"password" = "userPassword"
}
$publicSettings = @{
"repair_disk" = $true
"disk_name" = "<disk_name>"
}
$vmss = Get-AzVmss `
-ResourceGroupName $resourceGroupName `
-VMScaleSetName $vmssName
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "<extension-name>" `
-Publisher "Microsoft.OSTCExtensions" `
-Type "VMAccessForLinux" `
-TypeHandlerVersion "1.5"" `
-AutoUpgradeMinorVersion $true `
-Setting $publicSettings `
-ProtectedSetting $protectedSettings
Update-AzVmss `
-ResourceGroupName $resourceGroupName `
-Name $vmssName `
-VirtualMachineScaleSet $vmss
Устранение неполадок и поддержка
Журналы расширений VMAccess существуют локально на виртуальной машине и наиболее информативны при устранении неполадок.
Местоположение | Описание |
---|---|
/var/log/waagent.log | Содержит журналы из агента Linux и показывает, когда произошло обновление расширения. Мы можем проверить, чтобы убедиться, что расширение запустилось. |
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | Расширение VMAccess создает журналы, которые можно найти здесь. Каталог содержит CommandExecution.log , где можно найти каждую команду, выполненную вместе с результатом, а также extension.log отдельные журналы для каждого выполнения. |
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-самая< последняя версия>/config/* | Конфигурация и двоичные файлы для расширения виртуальной машины VMAccess. |
Вы также можете получить состояние выполнения расширения VMAccess, а также другие расширения на данной виртуальной машине, выполнив следующую команду:
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Сообщения об ошибках
Ошибка | Описание |
---|---|
Истекло время ожидания подготовки расширения виртуальной машины enablevmaccess. Подготовка расширения заняла слишком много времени. Расширение не передало сообщение. Дополнительные сведения об устранении неполадок доступны по адресу https://aka.ms/vmextensionlinuxtroubleshoot. | Сообщение об ошибке указывает, что подготовка расширения виртуальной машины enablevmaccess прерывалась из-за превышения времени ожидания, поскольку процесс завершения занял слишком много времени. Кроме того, расширение не предоставило никакого сообщения о состоянии во время процесса. Чтобы устранить эту проблему, попробуйте проверить производительность и сетевые условия виртуальной машины и повторить операцию подготовки. Дополнительные сведения см. в разделе "Устранение неполадок с расширениями виртуальной машины". |
Виртуальная машина сообщила о сбое при обработке расширения "enablevmaccess" (издатель "Microsoft.OSTCExtensions" и тип VMAccessForLinux). Сообщение об ошибке: "Включить сбой: пароль или ssh_key не указан." Дополнительные сведения об устранении неполадок доступны по адресу https://aka.ms/vmextensionlinuxtroubleshoot . | Сообщение об ошибке указывает, что виртуальная машина не смогла обработать расширение enablevmaccess, так как пароль или ключ SSH не указан. Эта ошибка связана с издателем Microsoft.OSTCExtensions и типом VMAccessForLinux. Чтобы устранить эту проблему, убедитесь, что пароль или ключ SSH предоставляются во время настройки расширения. |
Для получения дополнительной помощи вы можете обратиться к экспертам Azure в службе поддержки сообщества Azure. Кроме того, можно зарегистрировать обращение в службу поддержки Azure. Перейдите в службу поддержки Azure и выберите "Получить поддержку". Дополнительные сведения о поддержке Azure см. в разделе "Вопросы и ответы о планах поддержки Azure".
Дальнейшие шаги
Сведения о коде, текущих версиях и дополнительной документации см. в статье VMAccess Linux — GitHub.