Расширение VMAccess для Linux
Расширение VMAccess используется для управления администраторами, настройки SSH и проверки или восстановления дисков на виртуальных машинах Linux Azure. Расширение интегрируется с шаблонами Azure Resource Manager. Его также можно вызвать с помощью Azure CLI, Azure PowerShell, портал 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+ |
Rocky Linux | 9.x+ | 9.x+ |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
Советы
- VMAccess предназначен для восстановления доступа к виртуальной машине с учетом потери доступа. На основе этого принципа она предоставляет разрешение sudo учетной записи, указанной в поле имени пользователя. Если вы не хотите, чтобы пользователь мог получить разрешения sudo, войдите на виртуальную машину и используйте встроенные средства (например, usermod, chage и т. д.) для управления непривилегированных пользователей.
- К виртуальной машине может применяться только одна версия расширения. Чтобы выполнить второе действие, обновите существующее расширение с новой конфигурацией.
- Во время обновления пользователя VMAccess изменяет
sshd_config
файл и заранее создает резервную копию. Чтобы восстановить исходную конфигурацию 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
}
}
}
Значения свойств
Имя. | Значение и пример | Тип данных |
---|---|---|
версия_API | 2023-09-01 | Дата |
издатель | Microsoft.OSTCExtensions | строка |
type | VMAccessForLinux | строка |
typeHandlerVersion | 1.5 | INT |
Параметры значений свойств
Имя. | Тип данных | Description |
---|---|---|
check_disk | boolean | Проверка диска (необязательно). Только один между check_disk и repair_disk может иметь значение true. |
repair_disk | boolean | Проверка диска (необязательно). Только один между check_disk и repair_disk может иметь значение true. |
disk_name | строка | Имя диска для восстановления (требуется, если repair_disk имеет значение true). |
username | строка | Имя пользователя для управления (требуется для всех действий в учетной записи пользователя). |
password | строка | Пароль, заданный для учетной записи пользователя. |
ssh_key | строка | Открытый ключ SSH, добавляемый для учетной записи пользователя. Ключ SSH может находиться в формате или ssh-ed25519 .pem в ssh-rsa формате. |
reset_ssh | boolean | Следует ли сбрасывать SSH. Если true он заменяет файл sshd_config внутренним файлом ресурсов, соответствующим конфигурации SSH по умолчанию для этого дистрибутива. |
remove_user | строка | Имя удаляемого пользователя. Нельзя использовать с reset_ssh , restore_backup_ssh и password . |
expiration | строка | Срок действия, заданный для учетной записи, в виде yyyy-mm-dd . По умолчанию никогда не требуется. |
remove_prior_keys | boolean | Следует ли удалять старые ключи SSH при добавлении нового. Должен использоваться с ssh_key . |
restore_backup_ssh | boolean | Следует ли восстановить исходную резервную копию 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 use the VM Extension. Чтобы использовать эти команды, необходимо установить последнюю версию 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
Вы также можете использовать команду 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"}'
--protected-settings
Кроме того, параметры --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 существуют локально на виртуальной машине и наиболее информативны при устранении неполадок.
Расположение | Description |
---|---|
/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
Для получения дополнительной помощи вы можете обратиться к экспертам Azure в службе поддержки сообщества Azure. Кроме того, можно зарегистрировать обращение в службу поддержки Azure. Перейдите на сайт поддержки Azure и щелкните Получить поддержку. Дополнительные сведения о поддержке Azure см. в статье "Вопросы и ответы о планах поддержка Azure".
Следующие шаги
Сведения о коде, текущих версиях и дополнительной документации см. в статье VMAccess Linux — GitHub.