Inicie a sessão em uma máquina virtual do Linux no Azure usando o Microsoft Entra ID e o OpenSSH

Para melhorar a segurança das VMs (máquinas virtuais) do Linux no Azure, você pode fazer a integração com a autenticação do Microsoft Entra. Você já pode usar o Microsoft Entra ID como uma plataforma de autenticação básica e uma autoridade de certificação para entrar com o SSH em uma VM do Linux usando o Microsoft Entra ID e a autenticação baseada em certificado OpenSSH. Essa funcionalidade permite que as organizações gerenciem o acesso a VMs com o RBAC (controle de acesso baseado em função) do Azure e políticas de acesso condicional.

Este artigo mostra como criar e configurar uma VM do Linux e fazer logon com o Microsoft Entra ID usando a autenticação baseada em certificado OpenSSH.

Há muitos benefícios para a segurança ao usar o Microsoft Entra ID com autenticação baseada em certificado OpenSSH para iniciar sessão em VMs do Linux no Azure. Eles incluem:

  • Usar suas credenciais do Microsoft Entra para iniciar sessão em VMs do Linux do Azure.
  • Obter a autenticação baseada em chave SSH sem a necessidade de distribuir chaves SSH para usuários ou provisionar chaves públicas SSH em qualquer VM do Linux no Azure que você implantar. Essa experiência é muito mais simples do que precisar se preocupar com a expansão de chaves públicas SSH obsoletas que podem fazer com que o acesso não seja autorizado.
  • Reduza a dependência de contas de administradores locais, roubo de credenciais e credenciais fracas.
  • Ajudar a proteger as VMs do Linux configurando a complexidade da senha e as políticas de vida útil da senha para o Microsoft Entra ID.
  • Com o RBAC, especifique quem pode iniciar sessão em uma VM como um usuário regular ou com privilégios administrativos. Quando os usuários ingressam na equipe, você pode atualizar a política do RBAC do Azure da VM para conceder acesso, conforme necessário. Quando os funcionários saem da organização e as respectivas contas de usuário são desabilitadas ou removidas do Microsoft Entra ID, eles deixam de ter acesso aos recursos.
  • Com o acesso condicional, configurar as políticas necessárias para exigir a autenticação multifator ou para exigir que o dispositivo cliente seja gerenciado (por exemplo, em conformidade ou ingressado no Microsoft Entra híbrido) para usá-lo a fim de entrar com o SSH em VMs do Linux.
  • Use as políticas de implantação e auditoria do Azure para exigir o logon no Microsoft Entra para VMs do Linux e sinalizar as contas locais para aprovação.

Iniciar sessão em VMs do Linux com o Microsoft Entra ID funciona para clientes que usam os Serviços de Federação do Active Directory (AD FS).

Regiões do Azure e distribuições do Linux com suporte

Atualmente, há suporte para as seguintes distribuições do Linux nas implantações em uma região com suporte:

Distribuição Versão
Base Comum 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 Oracle Linux 8, Oracle Linux 9
RedHat Enterprise Linux (RHEL) RHEL 7.4 a RHEL 7.9, RHEL 8.3+, RHEL 9.0+
Rocky Rocky 8, Rocky 9
SLES (SUSE Linux Enterprise Server) SLES 12, SLES 15.1+
Ubuntu Ubuntu 16.04 a Ubuntu 24.04

No momento, há suporte para as seguintes regiões do Azure nesse recurso:

  • Azure Global
  • Azure Governamental
  • Microsoft Azure operado pela 21Vianet

Não há suporte para o uso da extensão SSH para a CLI do Azure em clusters do AKS (Serviço de Kubernetes do Azure). Para mais informações, veja Políticas de suporte para o AKS.

Se você escolher instalar e usar a CLI do Azure localmente, ela precisa ser a versão 2.22.1 ou posterior. Execute az --version para procurar a versão. Se você precisar instalar ou atualizar, veja Instalar a CLI do Azure.

Anotação

Essa funcionalidade também está disponível para Servidores habilitados para o Azure Arc.

Atender aos requisitos de logon com o Microsoft Entra ID usando a autenticação baseada em certificado OpenSSH

Para habilitar o logon no Microsoft Entra por meio da autenticação baseada em certificado SSH para VMs Linux no Azure, atenda aos requisitos de rede, de máquina virtual e de cliente (cliente SSH) a seguir.

Rede

A configuração da rede da VM precisa permitir o acesso de saída aos pontos de extremidade a seguir na porta TCP 443.

Azure Global:

  • https://packages.microsoft.com: para instalação e atualizações do pacote.
  • http://169.254.169.254: ponto de extremidade do Serviço de Metadados de Instância do Azure.
  • https://login.microsoftonline.com: para fluxos de autenticação baseados em PAM (módulos de autenticação conectáveis).
  • https://pas.windows.net: para fluxos do RBAC do Azure.

Azure Governamental:

  • https://packages.microsoft.com: para instalação e atualizações do pacote.
  • http://169.254.169.254: ponto de extremidade do Serviço de Metadados de Instância do Azure.
  • https://login.microsoftonline.us: para fluxos de autenticação baseados em PAM.
  • https://pasff.usgovcloudapi.net: para fluxos do RBAC do Azure.

Microsoft Azure operado pela 21Vianet:

  • https://packages.microsoft.com: para instalação e atualizações do pacote.
  • http://169.254.169.254: ponto de extremidade do Serviço de Metadados de Instância do Azure.
  • https://login.chinacloudapi.cn: para fluxos de autenticação baseados em PAM.
  • https://pas.chinacloudapi.cn: para fluxos do RBAC do Azure.

Máquina virtual

Verifique se a sua VM está configurada com a seguinte funcionalidade:

  • Identidade gerenciada atribuída pelo sistema. Essa opção é selecionada automaticamente quando você usa o portal do Azure para criar VMs e seleciona a opção de logon no Microsoft Entra. Você também pode habilitar a identidade gerenciada atribuída pelo sistema em uma VM nova ou existente usando a CLI do Azure.
  • aadsshlogin e aadsshlogin-selinux (conforme adequado). Esses pacotes são instalados com a extensão de VM AADSSHLoginForLinux. A extensão é instalada quando você usa o portal do Azure ou a CLI do Azure para criar VMs e habilitar o logon no Microsoft Entra (Tab Gerenciamento).

Cliente

Verifique se o cliente atende aos seguintes requisitos:

  • Suporte ao cliente SSH para certificados baseados em OpenSSH para autenticação. Você pode usar a CLI do Azure (2.21.1 ou posterior) com o OpenSSH (incluído no Windows 10 versão 1803 ou posterior) ou o Azure Cloud Shell para atender a este requisito.

  • Extensão SSH para a CLI do Azure. Instale essa extensão usando az extension add --name ssh. Você não precisará instalar essa extensão quando estiver usando o Azure Cloud Shell, pois ela já vem pré-instalada.

    Se você estiver usando cliente SSH que não seja a CLI do Azure ou o Azure Cloud Shell que dê suporte a certificados OpenSSH, ainda precisará usar a CLI do Azure com a extensão SSH para recuperar certificados SSH temporários e, opcionalmente, um arquivo de configuração. Em seguida, você pode usar o arquivo de configuração com o cliente SSH.

  • Conectividade TCP do cliente para o endereço IP público ou privado da VM. (O encaminhamento de ProxyCommand ou SSH para um computador que tenha conectividade também funciona.)

Importante

Os clientes SSH baseados em PuTTY agora dão suporte a certificados OpenSSH e podem ser usados para fazer logon com a autenticação baseada em certificado OpenSSH do Microsoft Entra.

Habilitar o logon do Microsoft Entra para uma VM do Linux no Azure

Para usar o logon no Microsoft Entra para uma VM do Linux no Azure, primeiro, você precisa habilitar a opção de logon no Microsoft Entra para sua VM do Linux. Em seguida, você configura as atribuições de função do Azure para usuários autorizados a iniciar sessão na VM. Por fim, use o cliente SSH que dá suporte ao OpenSSH, como a CLI do Azure ou o Azure Cloud Shell, para entrar com o SSH na VM do Linux.

Há duas formas de habilitar o logon do Microsoft Entra para a VM do Linux:

  • A experiência do portal do Azure durante a criação de uma VM do Linux
  • A experiência do Azure Cloud Shell durante a criação de uma VM do Linux ou o uso de uma existente

Portal do Azure

Você pode habilitar o logon no Microsoft Entra para uma das distribuições do Linux com suporte usando o portal do Azure.

Por exemplo, para criar uma VM com suporte de longo prazo (LTS) do Ubuntu Server 18.04 no Azure com o logon do Microsoft Entra:

  1. Iniciar sessão no portal do Azure ao usar uma conta que tenha acesso para criar VMs. Depois, selecionar + Criar um recurso.
  2. Selecione Criar em Ubuntu Server 18.04 LTS na exibição Popular.
  3. Na tab Gerenciamento:
    1. Marque a caixa de seleção Logon com Microsoft Entra ID.
    2. Verifique se a caixa de seleção Identidade gerenciada atribuída pelo sistema está marcada.
  4. Acesse o restante da experiência de criação de uma máquina virtual. Você precisará criar uma conta de administrador com um nome de usuário e uma senha ou uma chave pública SSH.

Azure Cloud Shell

O Azure Cloud Shell é um shell interativo gratuito que pode ser usado para executar as etapas neste artigo. Ferramentas comuns do Azure estão pré-instaladas e configuradas no Cloud Shell para uso com sua conta. Basta selecionar o botão Copiar para copiar o código, colá-lo no Cloud Shell e escolher a tecla Enter para executá-lo.

Há algumas maneiras de abrir o Cloud Shell:

  • Selecione Experimentar no canto superior direito de um bloco de código.
  • Abrir o Cloud Shell no browser.
  • Selecione o botão Cloud Shell no menu no canto superior direito do portal do Azure.

Se você escolher instalar e usar a CLI do Azure localmente, para este artigo, será necessário executar a versão 2.22.1 ou posterior. Execute az --version para procurar a versão. Se você precisar instalar ou atualizar, veja Instalar a CLI do Azure.

  1. Crie um grupo de recursos executando a opção az group create.
  2. Crie uma VM executando a opção az vm create. Use uma distribuição compatível em uma região com suporte.
  3. Instale a extensão de VM de logon no Microsoft Entra usando a opção az vm extension set.

O exemplo a seguir implanta uma VM e instala a extensão para habilitar o logon no Microsoft Entra para uma VM do Linux. As extensões de VM são pequenos aplicativos que fornecem tarefas de configuração e automação pós-implantação nas Máquinas Virtuais do Azure. Personalize o exemplo conforme necessário para dar suporte aos seus requisitos de teste.

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

A criação da VM e dos recursos de suporte demora alguns minutos.

A extensão AADSSHLoginForLinux pode ser instalada em uma VM do Linux existente (distribuição com suporte) com um agente de VM em execução para habilitar a autenticação do Microsoft Entra. Se você estiver implantando essa extensão em uma VM já criada, a VM precisará ter, pelo menos, 1 GB de memória alocada ou a instalação não ocorrerá.

O valor de provisioningState igual a Succeeded é exibido quando a extensão é instalada com êxito na VM. A VM precisa de um agente de VM em execução para instalar a extensão.

Configurar atribuições de função para a VM

Agora que você criou a VM, você precisa atribuir uma das seguintes funções do Azure para determinar quem pode iniciar sessão na VM. Para atribuir essas funções, você deve ter a função Administrador de acesso a dados da máquina virtual ou uma função que inclua a ação Microsoft.Authorization/roleAssignments/write, como a função de Administrador de controle de acesso baseado em função. No entanto, se você usar uma função diferente de Administrador de acesso a dados da máquina virtual, recomendamos adicionar uma condição para reduzir a permissão para criar atribuições de função.

  • Logon de Administrador da Máquina Virtual: os usuários que têm essa função atribuída podem iniciar sessão em uma máquina virtual do Azure com privilégios de administrador.
  • Logon de Usuário da Máquina Virtual: os usuários que têm essa função atribuída podem iniciar sessão em uma máquina virtual do Azure com privilégios de usuário regulares.

Para permitir que um usuário inicie sessão em uma VM por SSH, você deve atribuir a função de Logon do Administrador de Máquina Virtual ou Logon do Usuário da Máquina Virtual no grupo de recursos que contém a VM e sua rede virtual, interface de rede, endereço IP público ou recursos do balanceador de carga associados.

Um usuário do Azure que tem a função Proprietário ou Colaborador atribuída a uma VM não tem privilégios automaticamente para iniciar sessão no Microsoft Entra na VM por SSH. Há uma separação intencional (e auditada) entre o conjunto de pessoas que controla as máquinas virtuais e o conjunto de pessoas que pode acessar as máquinas virtuais.

Há duas maneiras de configurar atribuições de função para uma VM:

  • Experiência do portal do Azure
  • Experiência do Azure Cloud Shell

Anotação

As funções Logon de Administrador da Máquina Virtual e Logon de Usuário da Máquina Virtual usam dataActions e podem ser atribuídas no escopo do grupo de gerenciamento, da assinatura, do grupo de recursos ou do recurso. Recomendamos que você atribua as funções no nível do grupo de gerenciamento, da assinatura ou do grupo de recursos em vez do nível da VM individual. Essa prática evita o risco de alcançar o limite de atribuições de função do Azure por assinatura.

Portal do Azure

Para configurar atribuições de função para suas VMs do Linux habilitadas para o Microsoft Entra ID:

  1. Em Grupo de Recursos, selecione o grupo de recursos que contém a VM e o respectivo recurso de rede virtual, adaptador de rede, endereço IP público ou load balancer associado.

  2. Selecione IAM (Controle de acesso).

  3. Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.

  4. Atribua a função a seguir. Para ver as etapas detalhadas, veja Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Logon de Administrador da Máquina Virtual ou Logon de Usuário da Máquina Virtual
    Atribuir acesso a Usuário, grupo, entidade de serviço ou identidade gerenciada

    Captura de tela que mostra a página para adicionar uma atribuição de função.

Após alguns instantes, a entidade de segurança é atribuída a função no escopo selecionado.

Azure Cloud Shell

O exemplo a seguir usa az role assignment create para atribuir a função Logon de Administrador da Máquina Virtual para a VM ao usuário atual do Azure. Você obtém o nome de usuário da sua conta atual do Azure usando az account show e define o escopo para a VM criada em uma etapa anterior usando az vm show.

Você também pode atribuir o escopo em um nível do grupo de recursos ou da assinatura. As permissões normais herdadas do RBAC do Azure se aplicam.

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

Anotação

Se o domínio do Microsoft Entra e o domínio do nome de usuário de logon não corresponderem, especifique a ID de objeto da conta de usuário usando --assignee-object-id, não apenas o nome de usuário de --assignee. Obtenha a ID de objeto para a conta de usuário usando az ad user list.

Para obter mais informações sobre como usar o RBAC do Azure para gerenciar o acesso aos recursos da sua assinatura do Azure, veja Etapas para atribuir uma função do Azure.

Instalar a extensão SSH para a CLI do Azure

Se você estiver usando o Azure Cloud Shell, nenhuma outra configuração será necessária porque a versão mínima necessária da CLI do Azure e a extensão SSH para a CLI do Azure já estão incluídas no ambiente do Cloud Shell.

Execute o seguinte comando para adicionar a extensão SSH à CLI do Azure:

az extension add --name ssh

A versão mínima necessária para a extensão é 0.1.4. Verifique a versão instalada usando o seguinte comando:

az extension show --name ssh

Imponha políticas de acesso condicional

Você pode impor políticas de acesso condicional habilitadas com o logon no Microsoft Entra, como:

  • Exigência de autenticação multifator.
  • Exigir um dispositivo em conformidade ou ingressado no Microsoft Entra híbrido para o dispositivo que executa o cliente SSH.
  • Verificação de riscos antes de autorizar o acesso a VMs do Linux no Azure.

O aplicativo exibido na política de acesso condicional é chamado Entrada na VM do Linux no Azure.

Anotação

A imposição da política de acesso condicional que exige a conformidade do dispositivo ou o ingresso no Microsoft Entra híbrido que executa o cliente SSH só funciona com a CLI do Azure executada no Windows e no macOS. Não há suporte para ela durante o uso da CLI do Azure no Linux ou do Azure Cloud Shell.

Aplicativo ausente

Se o aplicativo Entrada na VM do Linux no Azure estiver ausente do acesso condicional, verifique se o aplicativo não está no locatário:

  1. Iniciar sessão no centro de administração do Microsoft Entra como, pelo menos, Administrador de aplicativos de nuvem.
  2. Navegue até Identidade>Aplicativos>Aplicativos empresariais.
  3. Remova os filtros para ver todos os aplicativos e pesquise por Máquina Virtual. Se você não vir a opção Iniciar sessão de VM do Linux do Microsoft Azure como resultado, a entidade de serviço estará ausente do locatário.

Fazer logon usando a conta de usuário do Microsoft Entra para entrar com o SSH na VM do Linux

Fazer logon usando a CLI do Azure

Digite az login. Esse comando abre uma janela do navegador, na qual você poderá se conectar usando sua conta do Microsoft Entra.

az login 

Em seguida, digite az ssh vm. O exemplo a seguir resolve automaticamente o endereço IP adequado para a VM.

az ssh vm -n myVM -g AzureADLinuxVM

Se solicitado, insira suas credenciais de logon do Microsoft Entra na página de logon, execute a autenticação multifator e/ou atenda às verificações do dispositivo. Você será solicitado somente se a sua sessão da CLI do Azure ainda não atender a nenhum critério de acesso condicional necessário. Feche a janela do navegador, volte ao prompt do SSH e você será conectado automaticamente à VM.

Você já está conectado à máquina virtual do Linux com as permissões de função atribuídas, como Usuário da VM ou Administrador da VM. Se a conta de usuário recebeu a função Logon de Administrador da Máquina Virtual, você pode usar sudo para executar comandos que exigem privilégios de raiz.

Fazer logon usando o Azure Cloud Shell

Você pode usar o Azure Cloud Shell para se conectar a VMs sem precisar instalar nada localmente na máquina cliente. Inicie o Cloud Shell selecionando o ícone do shell no canto superior direito do portal do Azure.

O Cloud Shell se conectará automaticamente a uma sessão no contexto do usuário conectado. Agora, execute az login novamente e passe pelo fluxo de conexão interativo:

az login

Em seguida, você poderá usar os comandos az ssh vm normais para se conectar usando o nome e o grupo de recursos ou o endereço IP da VM:

az ssh vm -n myVM -g AzureADLinuxVM

Anotação

Não há suporte para a imposição de política de acesso condicional que exige a conformidade do dispositivo ou o ingresso no Microsoft Entra híbrido durante o uso do Azure Cloud Shell.

Fazer logon usando a entidade de serviço do Microsoft Entra para entrar com o SSH na VM do Linux

A CLI do Azure dá suporte à autenticação com uma entidade de serviço em vez de uma conta de usuário. Como as entidades de serviço não são vinculadas a um usuário específico, os clientes podem usá-las para entrar com o SSH em uma VM para dar suporte a qualquer cenário de automação que possam ter. A entidade de serviço deve ter direitos de usuário de VM ou de administrador de VM atribuídos. Atribua permissões no nível de assinatura ou grupo de recursos.

O exemplo a seguir atribuirá direitos de administrador da VM à entidade de serviço no nível do grupo de recursos. Substitua os espaços reservados de ID de objeto, ID da assinatura e nome do grupo de recursos da entidade de serviço.

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>"

Use o exemplo a seguir para se autenticar na CLI do Azure usando a entidade de serviço. Para obter mais informações, confira o artigo Iniciar sessão na CLI do Azure com uma entidade de serviço.

az login --service-principal -u <sp-app-id> -p <password-or-cert> --tenant <tenant-id>

Quando a autenticação com uma entidade de serviço for concluída, use os comandos SSH normais da CLI do Azure para se conectar à VM:

az ssh vm -n myVM -g AzureADLinuxVM

Exportar a configuração do SSH para uso com clientes SSH que dão suporte ao OpenSSH

Entrar em VMs do Linux do Azure com o Microsoft Entra ID dá suporte à exportação do certificado e da configuração do OpenSSH. Você pode usar todos os clientes SSH que dão suporte a certificados baseados em OpenSSH para se conectar por meio do Microsoft Entra ID. O seguinte exemplo exporta a configuração de todos os endereços IP atribuídos à VM:

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

Como alternativa, você pode exportar a configuração especificando apenas o endereço IP. Substitua o endereço IP no exemplo a seguir pelo endereço IP público ou privado da VM. (Você precisa trazer uma conectividade própria para os IPs privados). Insira az ssh config -h para obter ajuda com este comando.

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

Em seguida, você pode se conectar à VM por meio do uso normal de OpenSSH. A conexão pode ser feita por meio de clientes SSH que usam o OpenSSH.

Executar o sudo com logon do Microsoft Entra

Depois que os usuários que tiverem sido atribuídos com sucesso à função de Administrador da VM entrarem com o SSH em uma VM do Linux, eles poderão executar o sudo sem nenhum outro requisito de interação ou de autenticação. Os usuários atribuídos à função de Usuário da VM não podem executar o sudo.

Conectar-se a VMs em conjuntos de dimensionamento de máquinas virtuais

Há suporte para conjuntos de dimensionamento de máquinas virtuais, mas as etapas são um pouco diferentes para habilitar e se conectar a VMs em um conjunto de dimensionamento de máquinas virtuais:

  1. Crie um conjunto de dimensionamento de máquinas virtuais ou escolha um existente. Habilite uma identidade gerenciada atribuída pelo sistema para o conjunto de dimensionamento de máquinas virtuais:

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Instale a extensão do Microsoft Entra em seu conjunto de dimensionamento de máquinas virtuais:

    az vmss extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group AzureADLinuxVM --vmss-name myVMSS
    

Os conjuntos de dimensionamento de máquinas virtuais geralmente não têm endereços IP públicos. Você deve ter conectividade com eles a partir de outra máquina que possa acessar sua rede virtual do Azure. Este exemplo mostra como usar o IP privado de uma VM de um conjunto de dimensionamento de máquinas virtuais para se conectar em um computador na mesma rede virtual:

az ssh vm --ip 10.11.123.456

Anotação

Não é possível determinar automaticamente os endereços IP da VM do conjunto de dimensionamento de máquinas virtuais usando os parâmetros --resource-group e --name.

Migrar da versão anterior (preview)

Se você estiver usando a versão anterior do logon no Microsoft Entra para Linux que estava baseada no fluxo de código do dispositivo, conclua as seguintes etapas usando a CLI do Azure:

  1. Desinstale a extensão AADLoginForLinux na VM:

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

    Anotação

    A desinstalação da extensão poderá falhar se houver algum usuário do Microsoft Entra conectado no momento na VM. Verifique se todos os usuários estão desconectados primeiro.

  2. Habilite a identidade gerenciada atribuída pelo sistema na VM:

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Instale a extensão AADSSHLoginForLinux na VM:

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

Use o Azure Policy para atender aos padrões e avaliar a conformidade

Use o Azure Policy para:

  • Verificar se o logon no Microsoft Entra está habilitado para as máquinas virtuais do Linux existentes e que virão a ser criadas.
  • Avaliar a conformidade do seu ambiente em escala em um dashboard de conformidade.

Com essa capacidade, você pode usar vários níveis de imposição. Você pode sinalizar as VMs novas e existentes do Linux no ambiente que não têm o logon do Microsoft Entra habilitado. Você também pode usar o Azure Policy para implantar a extensão do Microsoft Entra em novas VMs do Linux que não têm o logon do Microsoft Entra habilitado e corrigir esse padrão nas VMs do Linux existentes.

Além dessas funcionalidades, use o Azure Policy para detectar e sinalizar as VMs do Linux que tenham contas locais não aprovadas criadas nos respectivos computadores. Para saber mais, revise o Azure Policy.

Solucionar problemas ao iniciar sessão

Use as seções a seguir para corrigir erros comuns que podem ocorrer quando você tenta usar o SSH com as credenciais do Microsoft Entra.

Não foi possível recuperar o token do cache local

Se você receber uma mensagem informando que não foi possível recuperar o token do cache local, execute az login novamente e vá para um fluxo de conexão interativo. Revise a seção sobre registro em log usando o Azure Cloud Shell.

Acesso negado: função do Azure não atribuída

Se o erro "Função do Azure não atribuída" for exibido na solicitação do SSH, verifique se você configurou políticas do RBAC do Azure para a VM que concede ao usuário a função Logon de Administrador da Máquina Virtual ou Logon de Usuário da Máquina Virtual. Se você estiver tendo problemas com atribuições de função do Azure, confira o artigo Solução de problemas do RBAC do Azure.

Problemas ao excluir a extensão antiga (AADLoginForLinux)

Em caso de falha nos scripts de desinstalação, a extensão poderá ficar travada em um estado de transição. Quando isso ocorre, a extensão pode deixar os pacotes que deveriam ser desinstalados durante a remoção. Nesses casos, é melhor desinstalar manualmente os pacotes antigos e tentar executar o comando az vm extension delete.

Para desinstalar pacotes antigos:

  1. Faça logon como um usuário local com privilégios de administrador.
  2. Verifique se não há usuários do Microsoft Entra conectados. Chame o comando who -u para ver quem está conectado. Em seguida, use sudo kill <pid> para todos os processos de sessão relatados pelo comando anterior.
  3. Execute sudo apt remove --purge aadlogin (Ubuntu/Debian), sudo yum remove aadlogin (RHEL) ou sudo zypper remove aadlogin (openSUSE ou SLES).
  4. Se o comando falhar, experimente as ferramentas de nível reduzido com scripts desabilitados:
    1. Para o Ubuntu/Debian, execute sudo dpkg --purge aadlogin. Se ele ainda estiver falhando por causa do script, exclua o arquivo /var/lib/dpkg/info/aadlogin.prerm e tente novamente.
    2. Para o restante, execute rpm -e --noscripts aadogin.
  5. Repita as etapas de 3 a 4 para o pacote aadlogin-selinux.

Erros de instalação da extensão

A instalação da extensão de VM AADSSHLoginForLinux nos computadores existentes poderá falhar com um dos códigos de erro conhecidos a seguir.

Código de saída 22 diferente de zero

Se você receber o código de saída 22, o status da extensão de VM AADSSHLoginForLinux será exibido como Em transição no portal.

Essa falha ocorre porque uma identidade gerenciada atribuída pelo sistema é necessária.

A solução é:

  1. Desinstale a extensão com erro.
  2. Habilite uma identidade gerenciada atribuída pelo sistema na VM do Azure.
  3. Execute o comando de instalação da extensão novamente.

Código de saída 23 diferente de zero

Se você receber o código de saída 23, o status da extensão de VM AADSSHLoginForLinux será exibido como Em transição no portal.

Essa falha ocorre devido à extensão de VM AADLoginForLinux mais antiga ainda estar instalada.

A solução é desinstalar a extensão de VM AADLoginForLinux mais antiga da VM. Em seguida, o status da nova extensão de VM AADSSHLoginForLinux será alterado para Provisionamento bem-sucedido no portal.

Falhas na instalação ao usar um proxy HTTP

A extensão precisa de uma conexão HTTP para instalar pacotes e verificar a existência de uma identidade de sistema. Ela é executada no contexto de walinuxagent.service e requer uma alteração para que o agente saiba sobre as configurações de proxy. Abra o arquivo /lib/systemd/system/walinuxagent.service no computador de destino e adicione a seguinte linha após [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"

Reiniciar o agente (sudo systemctl restart walinuxagent). Agora tente novamente.

Falha no comando az ssh vm com o KeyError access_token

Em caso de falha do comando az ssh vm, você está usando uma versão desatualizada do cliente da CLI do Azure.

A solução é atualizar o cliente da CLI do Azure para a versão 2.21.0 ou posterior.

A conexão SSH está fechada

Depois que um usuário se conecta com êxito usando az login, a conexão com a VM por meio de az ssh vm -ip <address> ou az ssh vm --name <vm_name> -g <resource_group> pode falhar com a mensagem "Conexão fechada por <ip_address> porta 22".

Uma causa desse erro é que o usuário não foi atribuído à função Logon de Administrador da Máquina Virtual ou Logon de Usuário da Máquina Virtual no escopo dessa VM. Nesse caso, a solução é adicionar o usuário a uma dessas funções RBAC do Azure no escopo da VM.

Esse erro também pode ocorrer se o usuário está em uma função RBAC do Azure necessária, mas a identidade gerenciada atribuída pelo sistema foi desabilitada na VM. Nesse caso, execute estas ações:

  1. Habilite a identidade gerenciada atribuída pelo sistema na VM.
  2. Aguarde alguns minutos antes que o usuário tente se conectar usando az ssh vm --ip <ip_address>.

Problemas de conexão com os conjuntos de dimensionamento de máquinas virtuais

As conexões de VM com os conjuntos de dimensionamento de máquinas virtuais poderão falhar se as instâncias do conjunto de dimensionamento estiverem executando um modelo antigo.

A atualização das instâncias do conjunto de dimensionamento para o modelo mais recente pode resolver problemas, especialmente se uma atualização não foi executada desde que a extensão de logon no Microsoft Entra foi instalada. A atualização de uma instância aplica uma configuração padrão do conjunto de dimensionamento à instância individual.

As instruções AllowGroups ou DenyGroups no sshd_config fazem com que a primeira entrada falhe para usuários do Microsoft Entra

Se sshd_config contiver instruções AllowGroups ou DenyGroups, o primeiro logon falhará para os usuários do Microsoft Entra. Se a instrução tiver sido adicionada depois que um usuário já tiver um logon bem-sucedido, ele poderá fazer logon.

Uma solução é remover as instruções AllowGroups e DenyGroups de sshd_config.

Outra solução é mover AllowGroups e DenyGroups para uma seção match user em sshd_config. Garanta que o modelo de correspondência exclua os usuários do Microsoft Entra.

Permissão negada ao tentar se conectar do Azure Shell à VM Linux Red Hat/Oracle 7.X.

A versão do servidor OpenSSH na VM de destino 7.4 é muito antiga. Versão incompatível com o cliente OpenSSH versão 8.8. Veja Certificados SHA256 RSA que não funcionam mais para obter mais informações.

Solução alternativa:

  • Adicionando a opção "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" no comando az ssh vm .
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Adicionando a opção "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" no /home/<user>/.ssh/config file.

Adicionar o "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" ao arquivo de configuração do cliente.

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

Próximas etapas