Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Extensão VMAccess é usada para gerenciar usuários administrativos, configurar SSH e verificar ou reparar discos em máquinas virtuais Linux do Azure. A extensão integra-se com modelos do Azure Resource Manager. Ele também pode ser invocado usando a CLI do Azure, o Azure PowerShell, o portal do Azure e a API REST das Máquinas Virtuais do Azure.
Este artigo descreve como executar a extensão VMAccess a partir da CLI do Azure e através de um modelo do Azure Resource Manager. Este artigo também fornece etapas de solução de problemas para sistemas Linux.
Nota
Se utilizar a extensão VMAccess para repor a palavra-passe da sua VM depois de instalar a extensão de início de sessão do Microsoft Entra, execute novamente a extensão de início de sessão do Microsoft Entra para reativar o início de sessão do Microsoft Entra para a sua VM.
Nota
Experimenta o VM assist para diagnósticos mais rápidos. Recomendamos que execute o VM assist para Windows ou o VM assist para Linux. Essas ferramentas de diagnóstico baseadas em script ajudam você a identificar problemas comuns que afetam o Agente Convidado da VM do Azure e a integridade geral da VM.
Se estiver a experienciar problemas de desempenho com máquinas virtuais, antes de contactar o suporte, execute estas ferramentas.
Pré-requisitos
Distribuições Linux suportadas
| Editora | Distribuição | x64 | ARM64 |
|---|---|---|---|
| Comunidade Alma Linux | Alma Linux | 8.x+, 9.x+ | 8.x+, 9.x+ |
| Credativ | Debian | Mais de 10 | 11.x+ |
| Kinvolk | Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
| Microsoft | Azure Linux | 2.x | 2.x |
| Projeto openSUSE | openSUSE | 12.3+ | Não suportado |
| Oracle | Oracle Linux | 6,4+, 7,x+, 8,x+ | Não suportado |
| Red Hat | Red Hat Enterprise Linux | 6,7+, 7,x+, 8,x+, 9,x+, 10,x+ | 8,6+, 9,0+, 10,x+ |
| CIQ | Linux rochoso | 9.x+ | 9.x+ |
| SUSE | SLES | 12,x+, 15,x+ | 15.x SP4+ |
| Canonical | Ubuntu (versões LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Sugestões
- O VMAccess foi projetado para recuperar o acesso a uma VM dado que o acesso é perdido. Com base neste princípio, ele concede permissão sudo para a conta especificada no campo nome de usuário. Se você não deseja que um usuário obtenha permissões sudo, entre na VM e use ferramentas internas (por exemplo, usermod, change, etc.) para gerenciar usuários sem privilégios.
- Você só pode ter uma versão da extensão aplicada a uma VM. Para executar uma segunda ação, atualize a extensão existente com uma nova configuração.
- Durante uma atualização do usuário, o VMAccess altera o
sshd_configarquivo e faz um backup dele previamente. MudaChallengeResponseAuthenticationparanoePasswordAuthenticationparayes. Para restaurar a configuração SSH original de backup, execute VMAccess comrestore_backup_sshdefinido comoTrue.
Esquema de extensão
A configuração VMAccess Extension inclui definições para nome de usuário, senhas, chaves SSH, etc. Você pode armazenar essas informações em arquivos de configuração, especificá-las na linha de comando ou incluí-las em um modelo do Azure Resource Manager (ARM). O esquema JSON a seguir contém todas as propriedades disponíveis para uso em configurações públicas e protegidas.
{
"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
}
}
}
Valores de propriedade
| Nome | Valor / Exemplo | Tipo de Dados |
|---|---|---|
| Versão da API | 2023-09-01 | data |
| editor | Microsoft.OSTCExtensions | cadeia (de caracteres) |
| tipo | VMAccessForLinux | cadeia (de caracteres) |
| typeHandlerVersion | 1.5 | número inteiro |
Valores das propriedades de definições
| Nome | Tipo de Dados | Descrição |
|---|---|---|
| verificar_disco | Booleano | Verificar ou não o disco (opcional). Apenas um entre check_disk e repair_disk pode ser definido como true. |
| reparar_disco | Booleano | Verificar ou não o disco (opcional). Apenas um entre check_disk e repair_disk pode ser definido como true. |
| nome_disco | cadeia (de caracteres) | Nome do disco a reparar (necessário quando repair_disk for verdadeiro). |
| nome de utilizador | cadeia (de caracteres) | O nome do usuário a ser gerenciado (necessário para todas as ações em uma conta de usuário). |
| palavra-passe | cadeia (de caracteres) | A senha a ser definida para a conta de usuário. |
| ssh_key | cadeia (de caracteres) | A chave pública SSH a ser adicionada para a conta de usuário. A chave SSH pode estar em ssh-rsa, ssh-ed25519ou .pem formato. |
| reset_ssh | Booleano | Se deve ou não redefinir o SSH. Se true, ele substitui o arquivo sshd_config por um arquivo de recurso interno correspondente à configuração SSH padrão para essa distro. |
| remove_user | cadeia (de caracteres) | O nome do usuário a ser removido. Não pode ser usado com reset_ssh, restore_backup_sshe password. |
| expiração | cadeia (de caracteres) | Expiração a definir para a conta, na forma de yyyy-mm-dd. O padrão é nunca. |
| remove_prior_keys | Booleano | Remover ou não chaves SSH antigas ao adicionar uma nova. Deve ser utilizado com ssh_key. |
| restore_backup_ssh | Booleano | Restaurar ou não o sshd_config originalmente guardado como backup. |
Implementação de modelos
As Extensões de VM do Azure podem ser implantadas com modelos do Azure Resource Manager (ARM). O esquema JSON detalhado na seção anterior pode ser usado em um modelo ARM para executar a extensão VMAccess durante a implantação do modelo. Você pode encontrar um modelo de exemplo que inclui a extensão VMAccess no GitHub.
A configuração JSON para uma extensão de máquina virtual deve ser inserida dentro do fragmento de recurso de máquina virtual do modelo, especificamente no objeto "resources": [] para o modelo de máquina virtual e sob o objeto "virtualMachineProfile":"extensionProfile":{"extensions" :[] para um conjunto de dimensionamento de máquina virtual.
Implementação da CLI do Azure
Usando comandos de usuário da VM da CLI do Azure
Os seguintes comandos da CLI em az vm user usam a extensão VMAccess. Para usar esses comandos, você precisa instalar a CLI do Azure mais recente e entrar em uma conta do Azure usando az sign-in.
Update SSH key (Atualizar as chaves de SSH)
O exemplo a seguir atualiza a chave SSH para o usuário azureUser na VM chamada myVM:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Nota
O az vm user update comando acrescenta o novo texto de chave pública ao ~/.ssh/authorized_keys arquivo para o usuário administrador na VM. Este comando não substitui nem remove nenhuma chave SSH existente. Este comando não remove chaves anteriores definidas no momento da implantação ou atualizações subsequentes usando a extensão VMAccess.
Repor palavra-passe
O exemplo a seguir redefine a senha do usuário azureUser na VM chamada myVM:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
Reiniciar SSH
O exemplo a seguir reinicia o daemon SSH e redefine a configuração SSH para valores padrão em uma VM chamada myVM:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Nota
O az vm user reset-ssh comando substitui o arquivo sshd_config por um arquivo de configuração padrão do diretório de recursos internos. Este comando não restaura a configuração SSH original encontrada na máquina virtual.
Criar um utilizador administrativo/sudo
O exemplo a seguir cria um usuário nomeado myNewUser com permissões sudo. A conta usa uma chave SSH para autenticação na VM chamada myVM. Esse método ajuda você a recuperar o acesso a uma VM quando as credenciais atuais são perdidas ou esquecidas. Como prática recomendada, as contas com permissões sudo devem ser restritas.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Eliminar um utilizador
O exemplo a seguir exclui um usuário nomeado myNewUser na VM chamada myVM:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Usando comandos de extensão VM/Virtual Machine Scale Sets da CLI do Azure
Você também pode usar os comandos az vm extension set e az vmss extension set para executar a VMAccess Extension com a configuração especificada.
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"}'
Os --settings parâmetros e --protected-settings também aceitam caminhos de arquivo JSON. Por exemplo, para atualizar a chave pública SSH de um usuário, crie um arquivo JSON chamado update_ssh_key.json e adicione configurações no formato a seguir. Substitua os valores dentro do arquivo por suas próprias informações:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
Execute a extensão VMAccess através do seguinte comando:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--protected-settings update_ssh_key.json
Implantação do Azure PowerShell
O Azure PowerShell pode ser usado para implantar a Extensão VMAccess em uma máquina virtual existente ou em um conjunto de dimensionamento de máquina virtual. Você pode implantar a extensão em uma VM executando:
$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
Você também pode fornecer e modificar configurações de extensão usando cadeias de caracteres:
$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
Para implementar num conjunto de escalonamento de máquinas virtuais, execute o seguinte comando:
$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
Solução de problemas e suporte
Os logs de extensão do VMAccess existem localmente na VM e são mais informativos quando se trata de solução de problemas.
| Localização | Descrição |
|---|---|
| /var/log/waagent.log | Contém logs do Agente Linux e mostra quando ocorreu uma atualização para a extensão. Podemos verificá-lo para garantir que a extensão funcionou. |
| /var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | A extensão VMAccess produz logs, que podem ser encontrados aqui. O diretório contém CommandExecution.log onde você pode encontrar cada comando executado junto com seu resultado, juntamente com extension.log, que contém logs individuais para cada execução. |
| /var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-<versão mais recente>/config/* | A configuração e os binários para VMAccess VM Extension. |
Você também pode recuperar o estado de execução da extensão VMAccess, juntamente com outras extensões em uma determinada VM, executando o seguinte comando:
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Mensagens de erro
| Erro | Descrição |
|---|---|
| O provisionamento da extensão VM enablevmaccess expirou. O provisionamento de extensão levou muito tempo para ser concluído. A extensão não relatou uma mensagem. Mais informações sobre solução de problemas estão disponíveis em https://aka.ms/vmextensionlinuxtroubleshoot. | A mensagem de erro indica que o provisionamento da extensão de VM 'enablevmaccess' expirou devido a demorar muito para ser concluído. Além disso, a extensão não forneceu nenhuma mensagem de status durante o processo. Para resolver esse problema, considere verificar o desempenho da VM e as condições de rede e tente novamente a operação de provisionamento. Para obter mais informações, consulte Solucionar problemas de extensões de VM. |
| A VM relatou uma falha ao processar a extensão 'enablevmaccess' (editor 'Microsoft.OSTCExtensions' e tipo 'VMAccessForLinux'). Mensagem de erro: 'Falha ao ativar: nenhuma senha ou ssh_key é especificada.'. Mais informações sobre solução de problemas estão disponíveis em https://aka.ms/vmextensionlinuxtroubleshoot . | A mensagem de erro indica que a VM falhou ao processar a extensão 'enablevmaccess' porque nenhuma senha ou chave SSH foi especificada. Esta falha está associada ao editor 'Microsoft.OSTCExtensions' e ao tipo 'VMAccessForLinux'. Para resolver esse problema, verifique se uma senha ou uma chave SSH é fornecida durante a configuração da extensão. |
Para obter mais ajuda, pode contactar os especialistas do Azure em Suporte da Comunidade do Azure. Como alternativa, você pode registrar um incidente de suporte do Azure. Vá para Suporte do Azure e selecione Obter suporte. Para obter mais informações sobre o Suporte do Azure, leia as Perguntas frequentes sobre planos de suporte do Azure.
Próximos passos
Para ver o código, as versões atuais e mais documentação, consulte VMAccess Linux - GitHub.