Accedere a una macchina virtuale Linux in Azure usando Microsoft Entra ID e OpenSSH

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.

Per migliorare la sicurezza delle macchine virtuali Linux in Azure, è possibile eseguire l'integrazione con l'autenticazione Di Microsoft Entra. È ora possibile usare Microsoft Entra ID come piattaforma di autenticazione principale e un'autorità di certificazione per ssh in una macchina virtuale Linux usando l'ID Microsoft Entra e l'autenticazione basata su certificati OpenSSH. Questa funzionalità consente alle organizzazioni di gestire l'accesso alle macchine virtuali con il controllo degli accessi in base al ruolo di Azure e i criteri di accesso condizionale.

Questo articolo illustra come creare e configurare una macchina virtuale Linux e accedere con Microsoft Entra ID usando l'autenticazione basata su certificati OpenSSH.

Esistono molti vantaggi per la sicurezza dell'uso di Microsoft Entra ID con l'autenticazione basata su certificati OpenSSH per accedere alle macchine virtuali Linux in Azure. che includono:

  • Usare le credenziali di Microsoft Entra per accedere alle macchine virtuali Linux di Azure.
  • Ottenere l'autenticazione basata su chiavi SSH senza dover distribuire chiavi SSH agli utenti o effettuare il provisioning di chiavi pubbliche SSH in qualsiasi macchina virtuale Linux di Azure distribuita. Questa esperienza è molto più semplice rispetto alla necessità di preoccuparsi dello sprawl di chiavi pubbliche SSH non aggiornati che potrebbero causare l'accesso non autorizzato.
  • Ridurre la dipendenza da account amministratore locale, furto di credenziali e credenziali deboli.
  • Proteggere le macchine virtuali Linux configurando la complessità delle password e i criteri di durata delle password per Microsoft Entra ID.
  • Con il controllo degli accessi in base al ruolo specificare chi può accedere a una macchina virtuale come utente normale o con privilegi di amministratore. Quando gli utenti si uniscono al team, è possibile aggiornare i criteri di controllo degli accessi in base al ruolo di Azure per la macchina virtuale per concedere l'accesso in base alle esigenze. Quando i dipendenti lasciano l'organizzazione e i relativi account utente vengono disabilitati o rimossi dall'ID Microsoft Entra, non hanno più accesso alle risorse.
  • Con l'accesso condizionale, configurare i criteri per richiedere l'autenticazione a più fattori o richiedere che il dispositivo client sia gestito (ad esempio, conforme o aggiunto a Microsoft Entra ibrido) prima di poterlo usare SSH in macchine virtuali Linux.
  • Usare i criteri di distribuzione e controllo di Azure per richiedere l'accesso a Microsoft Entra per le macchine virtuali Linux e contrassegnare gli account locali non approvati.

Accedere alle macchine virtuali Linux con Microsoft Entra ID funziona per i clienti che usano Active Directory Federation Services.

Distribuzioni e aree di Azure supportate per Linux

Le distribuzioni Linux seguenti sono attualmente supportate per le distribuzioni in un'area supportata:

Distribuzione Versione
Common Base Linux Mariner (CBL-Mariner) CBL-Mariner 1, CBL-Mariner 2
CentOS CentOS 7, CentOS 8
Debian Debian 9, Debian 10, Debian 11, Debian 12
openSUSE openSU edizione Standard Leap 42.3, openSU edizione Standard Leap 15.1+
Oracle Oracle Linux 8, Oracle Linux 9
RedHat Enterprise Linux (RHEL) Da RHEL 7.4 a RHEL 7.9, RHEL 8.3+
SUSE Linux Enterprise Server (SLES) SLES 12, SLES 15.1+
Ubuntu Server Da Ubuntu Server 16.04 a Ubuntu Server 22.04, tutte le versioni secondarie successive a Ubuntu 22.04

Per questa funzionalità sono attualmente supportate le aree di Azure seguenti:

  • Azure Global
  • Azure Government
  • Microsoft Azure gestito da 21Vianet

L'uso dell'estensione SSH per l'interfaccia della riga di comando di Azure nei cluster servizio Azure Kubernetes (AKS) non è supportato. Per altre informazioni, vedere Criteri di supporto per il servizio Azure Kubernetes.

Se si sceglie di installare e usare l'interfaccia della riga di comando di Azure in locale, deve essere la versione 2.22.1 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Nota

Questa funzionalità è disponibile anche per i server abilitati per Azure Arc.

Soddisfare i requisiti per l'accesso con Microsoft Entra ID usando l'autenticazione basata su certificati OpenSSH

Per abilitare l'accesso a Microsoft Entra tramite l'autenticazione basata su certificati SSH per le macchine virtuali Linux in Azure, assicurarsi di soddisfare i requisiti di rete, macchina virtuale e client (client SSH) seguenti.

Rete

La configurazione della rete VM deve consentire l'accesso in uscita agli endpoint seguenti sulla porta TCP 443.

Azure globale:

  • https://packages.microsoft.com: per l'installazione e gli aggiornamenti dei pacchetti.
  • http://169.254.169.254: endpoint del servizio metadati dell'istanza di Azure.
  • https://login.microsoftonline.com: per i flussi di autenticazione basati su PAM (moduli di autenticazione collegabili).
  • https://pas.windows.net: per i flussi di Controllo degli accessi in base al ruolo di Azure.

Azure per enti pubblici:

  • https://packages.microsoft.com: per l'installazione e gli aggiornamenti dei pacchetti.
  • http://169.254.169.254: endpoint del servizio metadati dell'istanza di Azure.
  • https://login.microsoftonline.us: per i flussi di autenticazione basati su PAM.
  • https://pasff.usgovcloudapi.net: per i flussi di Controllo degli accessi in base al ruolo di Azure.

Microsoft Azure gestito da 21Vianet:

  • https://packages.microsoft.com: per l'installazione e gli aggiornamenti dei pacchetti.
  • http://169.254.169.254: endpoint del servizio metadati dell'istanza di Azure.
  • https://login.chinacloudapi.cn: per i flussi di autenticazione basati su PAM.
  • https://pas.chinacloudapi.cn: per i flussi di Controllo degli accessi in base al ruolo di Azure.

Macchina virtuale

Assicurarsi che la macchina virtuale sia configurata con le funzionalità seguenti:

  • Identità gestita assegnata dal sistema. Questa opzione viene selezionata automaticamente quando si usa il portale di Azure per creare macchine virtuali e selezionare l'opzione di accesso Microsoft Entra. È anche possibile abilitare l'identità gestita assegnata dal sistema in una macchina virtuale nuova o esistente usando l'interfaccia della riga di comando di Azure.
  • aadsshlogin e aadsshlogin-selinux (in base alle esigenze). Questi pacchetti vengono installati con l'estensione della macchina virtuale AADSSHLoginForLinux. L'estensione viene installata quando si usa la portale di Azure o l'interfaccia della riga di comando di Azure per creare macchine virtuali e abilitare l'accesso a Microsoft Entra (scheda Gestione).

Client

Assicurarsi che il client soddisfi i requisiti seguenti:

  • Supporto client SSH per i certificati basati su OpenSSH per l'autenticazione. È possibile usare l'interfaccia della riga di comando di Azure (2.21.1 o successiva) con OpenSSH (incluso in Windows 10 versione 1803 o successiva) o Azure Cloud Shell per soddisfare questo requisito.

  • Estensione SSH per l'interfaccia della riga di comando di Azure. È possibile installare questa estensione usando az extension add --name ssh. Non è necessario installare questa estensione quando si usa Azure Cloud Shell, perché viene preinstallata.

    Se si usa un client SSH diverso dall'interfaccia della riga di comando di Azure o da Azure Cloud Shell che supporta i certificati OpenSSH, sarà comunque necessario usare l'interfaccia della riga di comando di Azure con l'estensione SSH per recuperare i certificati SSH temporanei e, facoltativamente, un file di configurazione. È quindi possibile usare il file di configurazione con il client SSH.

  • Connettività TCP dal client all'indirizzo IP pubblico o privato della macchina virtuale. L'inoltro ProxyCommand o SSH a un computer con connettività funziona anche.

Importante

I client SSH basati su PuTTY ora supportano i certificati OpenSSH e possono essere usati per accedere con l'autenticazione basata su certificati OpenSSH di Microsoft Entra.

Abilitare l'accesso a Microsoft Entra per una macchina virtuale Linux in Azure

Per usare l'account di accesso di Microsoft Entra per una macchina virtuale Linux in Azure, è necessario abilitare prima l'opzione di accesso Microsoft Entra per la macchina virtuale Linux. Si configurano quindi le assegnazioni di ruolo di Azure per gli utenti autorizzati ad accedere alla macchina virtuale. Infine, si usa il client SSH che supporta OpenSSH, ad esempio l'interfaccia della riga di comando di Azure o Azure Cloud Shell, per connettersi tramite SSH alla macchina virtuale Linux.

Esistono due modi per abilitare l'accesso a Microsoft Entra per la macchina virtuale Linux:

  • Esperienza portale di Azure durante la creazione di una macchina virtuale Linux
  • Esperienza di Azure Cloud Shell durante la creazione di una macchina virtuale Linux o l'uso di un'istanza esistente

Azure portal

È possibile abilitare l'account di accesso di Microsoft Entra per una delle distribuzioni Linux supportate usando il portale di Azure.

Ad esempio, per creare una macchina virtuale Ubuntu Server 18.04 con supporto a lungo termine (LTS) in Azure con l'account di accesso Microsoft Entra:

  1. Accedere al portale di Azure usando un account che ha accesso per creare macchine virtuali e quindi selezionare + Crea una risorsa.
  2. Selezionare Crea in Ubuntu Server 18.04 LTS nella visualizzazione Popolare .
  3. Nella scheda Gestione :
    1. Selezionare la casella di controllo Login with Microsoft Entra ID (Login with Microsoft Entra ID ).
    2. Verificare che la casella di controllo Identità gestita assegnata dal sistema sia selezionata.
  4. Esaminare il resto dell'esperienza di creazione di una macchina virtuale. Sarà necessario creare un account amministratore con nome utente e password o chiave pubblica SSH.

Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo. Gli strumenti comuni di Azure sono preinstallati e configurati in Cloud Shell per l'uso con l'account. È sufficiente selezionare il pulsante Copia per copiare il codice, incollarlo in Cloud Shell e quindi selezionare la chiave INVIO per eseguirla.

Esistono alcuni modi per aprire Cloud Shell:

  • Selezionare Prova nell'angolo superiore destro di un blocco di codice.
  • Aprire Cloud Shell nel browser.
  • Selezionare il pulsante Cloud Shell nel menu nell'angolo in alto a destra del portale di Azure.

Se si sceglie di installare e usare l'interfaccia della riga di comando di Azure in locale, questo articolo richiede l'uso della versione 2.22.1 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

  1. Creare un gruppo di risorse eseguendo az group create.
  2. Creare una macchina virtuale eseguendo az vm create. Usare una distribuzione supportata in un'area supportata.
  3. Installare l'estensione della macchina virtuale di accesso Di Microsoft Entra usando az vm extension set.

L'esempio seguente distribuisce una macchina virtuale e quindi installa l'estensione per abilitare l'account di accesso Di Microsoft Entra per una macchina virtuale Linux. Le estensioni vm sono applicazioni di piccole dimensioni che forniscono attività di configurazione e automazione post-distribuzione in Azure Macchine virtuali. Personalizzare l'esempio in base alle esigenze per supportare i requisiti di test.

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

La creazione della macchina virtuale e delle risorse di supporto richiede alcuni minuti.

L'estensione AADSSHLoginForLinux può essere installata in una macchina virtuale Linux esistente (distribuzione supportata) con un agente di macchine virtuali in esecuzione per abilitare l'autenticazione Di Microsoft Entra. Se si distribuisce questa estensione in una macchina virtuale creata in precedenza, la macchina virtuale deve avere almeno 1 GB di memoria allocata o l'installazione avrà esito negativo.

Il provisioningState valore di Succeeded viene visualizzato quando l'estensione viene installata correttamente nella macchina virtuale. Per installare l'estensione, la macchina virtuale deve avere un agente di macchine virtuali in esecuzione.

Configurare le assegnazioni di ruolo per la macchina virtuale

Dopo aver creato la macchina virtuale, è necessario assegnare uno dei ruoli di Azure seguenti per determinare chi può accedere alla macchina virtuale. Per assegnare questi ruoli, è necessario avere il ruolo accesso ai dati della macchina virtuale Amministrazione istrator o qualsiasi ruolo che includa l'azioneMicrosoft.Authorization/roleAssignments/write, ad esempio il ruolo basato su ruoli Controllo di accesso Amministrazione istrator. Tuttavia, se si usa un ruolo diverso da Accesso ai dati della macchina virtuale Amministrazione istrator, è consigliabile aggiungere una condizione per ridurre l'autorizzazione per creare assegnazioni di ruolo.

  • Accesso alla macchina virtuale Amministrazione istrator: gli utenti con questo ruolo assegnato possono accedere a una macchina virtuale di Azure con privilegi di amministratore.
  • Accesso utente macchina virtuale: gli utenti con questo ruolo assegnato possono accedere a una macchina virtuale di Azure con privilegi utente normali.

Per consentire a un utente di accedere a una macchina virtuale tramite SSH, è necessario assegnare il ruolo Di accesso della macchina virtuale Amministrazione istrator o Accesso utente macchina virtuale nel gruppo di risorse che contiene la macchina virtuale e la rete virtuale associata, l'interfaccia di rete, l'indirizzo IP pubblico o le risorse del servizio di bilanciamento del carico.

Un utente di Azure a cui è assegnato il ruolo Proprietario o Collaboratore per una macchina virtuale non ha automaticamente privilegi per l'accesso a Microsoft Entra alla macchina virtuale tramite SSH. Esiste una separazione intenzionale e controllata tra il set di persone che controllano le macchine virtuali e il set di persone che possono accedere alle macchine virtuali.

Esistono due modi per configurare le assegnazioni di ruolo per una macchina virtuale:

  • Esperienza del portale di Azure
  • Esperienza di Azure Cloud Shell

Nota

I ruoli account di accesso e accesso utente macchina virtuale della macchina virtuale Amministrazione istrator usano dataActions e possono essere assegnati nel gruppo di gestione, nella sottoscrizione, nel gruppo di risorse o nell'ambito delle risorse. È consigliabile assegnare i ruoli a livello di gruppo di gestione, sottoscrizione o gruppo di risorse e non a livello di singola macchina virtuale. Questa procedura evita il rischio di raggiungere il limite di assegnazioni di ruolo di Azure per sottoscrizione.

Azure portal

Per configurare le assegnazioni di ruolo per le macchine virtuali Linux abilitate per Microsoft Entra ID:

  1. Per Gruppo di risorse selezionare il gruppo di risorse che contiene la macchina virtuale e la rete virtuale associata, l'interfaccia di rete, l'indirizzo IP pubblico o la risorsa di bilanciamento del carico.

  2. Seleziona Controllo di accesso (IAM).

  3. Selezionare Aggiungi>Aggiungi assegnazione di ruolo per aprire il riquadro Aggiungi assegnazione di ruolo.

  4. Assegnare il ruolo seguente. Per i passaggi dettagliati, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Accesso utente macchina virtuale Amministrazione istrator o accesso utente macchina virtuale
    Assegna accesso a Utente, gruppo, entità servizio o identità gestita

    Screenshot che mostra la pagina per l'aggiunta di un'assegnazione di ruolo.

Dopo qualche istante, all'entità di sicurezza verrà assegnato il ruolo per l'ambito selezionato.

Azure Cloud Shell

L'esempio seguente usa az role assignment create per assegnare il ruolo di accesso della macchina virtuale Amministrazione istrator alla macchina virtuale per l'utente di Azure corrente. Si ottiene il nome utente dell'account Azure corrente usando az account show e si imposta l'ambito sulla macchina virtuale creata in un passaggio precedente usando az vm show.

È anche possibile assegnare l'ambito a livello di gruppo di risorse o sottoscrizione. Si applicano le normali autorizzazioni di ereditarietà del controllo degli accessi in base al ruolo di Azure.

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

Nota

Se il dominio di microsoft Entra e il dominio del nome utente di accesso non corrispondono, è necessario specificare l'ID oggetto dell'account utente usando --assignee-object-id, non solo il nome utente per --assignee. È possibile ottenere l'ID oggetto per l'account utente usando az ad user list.

Per altre informazioni su come usare il controllo degli accessi in base al ruolo di Azure per gestire l'accesso alle risorse della sottoscrizione di Azure, vedere Passaggi per assegnare un ruolo di Azure.

Installare l'estensione SSH per l'interfaccia della riga di comando di Azure

Se si usa Azure Cloud Shell, non sono necessarie altre configurazioni perché sia la versione minima necessaria dell'interfaccia della riga di comando di Azure che l'estensione SSH per l'interfaccia della riga di comando di Azure sono già incluse nell'ambiente Cloud Shell.

Eseguire il comando seguente per aggiungere l'estensione SSH per l'interfaccia della riga di comando di Azure:

az extension add --name ssh

La versione minima necessaria per l'estensione è 0.1.4. Controllare la versione installata usando il comando seguente:

az extension show --name ssh

Applicare i criteri di accesso condizionale

È possibile applicare i criteri di accesso condizionale abilitati con l'account di accesso Microsoft Entra, ad esempio:

  • Richiesta dell'autenticazione a più fattori.
  • Richiesta di un dispositivo aggiunto ibrido o conforme a Microsoft Entra per il dispositivo che esegue il client SSH.
  • Verifica dei rischi prima di autorizzare l'accesso alle macchine virtuali Linux in Azure.

L'applicazione visualizzata nei criteri di accesso condizionale è denominata Accesso alle macchine virtuali Linux di Azure.

Nota

L'applicazione dei criteri di accesso condizionale che richiede la conformità del dispositivo o l'aggiunta ibrida Di Microsoft Entra nel dispositivo che esegue il client SSH funziona solo con l'interfaccia della riga di comando di Azure in esecuzione in Windows e macOS. Non è supportato quando si usa l'interfaccia della riga di comando di Azure in Linux o Azure Cloud Shell.

Applicazione mancante

Se l'applicazione di accesso alla macchina virtuale Linux di Azure non è presente nell'accesso condizionale, assicurarsi che l'applicazione non sia nel tenant:

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione cloud Amministrazione istrator.
  2. Passare a Applicazioni di identità>Applicazioni>aziendali.
  3. Rimuovere i filtri per visualizzare tutte le applicazioni e cercare Macchina virtuale. Se non viene visualizzato l'accesso alla macchina virtuale Linux di Microsoft Azure, l'entità servizio non è presente nel tenant.

Accedere usando un account utente Microsoft Entra per connettersi tramite SSH alla macchina virtuale Linux

Accedere con l'interfaccia della riga di comando di Azure

Immetti az login. Questo comando apre una finestra del browser, in cui è possibile accedere usando l'account Microsoft Entra.

az login 

Immettere quindi az ssh vm. Nell'esempio seguente viene risolto automaticamente l'indirizzo IP appropriato per la macchina virtuale.

az ssh vm -n myVM -g AzureADLinuxVM

Se richiesto, immettere le credenziali di accesso di Microsoft Entra nella pagina di accesso, eseguire l'autenticazione a più fattori e/o soddisfare i controlli del dispositivo. Verrà richiesto solo se si è la sessione dell'interfaccia della riga di comando di Azure non soddisfa già i criteri di accesso condizionale necessari. Chiudere la finestra del browser, tornare al prompt SSH e si verrà connessi automaticamente alla macchina virtuale.

È stato eseguito l'accesso alla macchina virtuale Linux con le autorizzazioni del ruolo assegnate, ad esempio l'utente della macchina virtuale o la macchina virtuale Amministrazione istrator. Se all'account utente viene assegnato il ruolo di accesso della macchina virtuale Amministrazione istrator, è possibile usare sudo per eseguire comandi che richiedono privilegi radice.

Accedere con Azure Cloud Shell

È possibile usare Azure Cloud Shell per connettersi alle macchine virtuali senza dover installare nulla in locale nel computer client. Avviare Cloud Shell selezionando l'icona della shell nell'angolo superiore destro del portale di Azure.

Cloud Shell si connette automaticamente a una sessione nel contesto dell'utente connesso. az login Eseguire di nuovo ed eseguire di nuovo il flusso di accesso interattivo:

az login

È quindi possibile usare i comandi normali az ssh vm per connettersi usando il nome e il gruppo di risorse o l'indirizzo IP della macchina virtuale:

az ssh vm -n myVM -g AzureADLinuxVM

Nota

L'applicazione dei criteri di accesso condizionale che richiede la conformità del dispositivo o l'aggiunta ibrida a Microsoft Entra non è supportata quando si usa Azure Cloud Shell.

Accedere usando l'entità servizio Microsoft Entra per ssh nella macchina virtuale Linux

L'interfaccia della riga di comando di Azure supporta l'autenticazione con un'entità servizio anziché un account utente. Poiché le entità servizio non sono associate a un determinato utente, i clienti possono usarle per connettersi tramite SSH in una macchina virtuale per supportare gli scenari di automazione che potrebbero avere. All'entità servizio devono essere assegnati diritti utente di macchina virtuale Amministrazione istrator o vm. Assegnare autorizzazioni a livello di sottoscrizione o gruppo di risorse.

Nell'esempio seguente verranno assegnati diritti di Amministrazione istrator alla entità servizio a livello di gruppo di risorse. Sostituire i segnaposto per l'ID oggetto dell'entità servizio, l'ID sottoscrizione e il nome del gruppo di risorse.

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

Usare l'esempio seguente per eseguire l'autenticazione nell'interfaccia della riga di comando di Azure usando l'entità servizio. Per altre informazioni, vedere l'articolo Accedere all'interfaccia della riga di comando di Azure con un'entità servizio.

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

Al termine dell'autenticazione con un'entità servizio, usare i normali comandi SSH dell'interfaccia della riga di comando di Azure per connettersi alla macchina virtuale:

az ssh vm -n myVM -g AzureADLinuxVM

Esportare la configurazione SSH da usare con i client SSH che supportano OpenSSH

Accedere alle macchine virtuali Linux di Azure con Microsoft Entra ID supporta l'esportazione del certificato e della configurazione OpenSSH. Ciò significa che è possibile usare tutti i client SSH che supportano i certificati basati su OpenSSH per accedere tramite Microsoft Entra ID. L'esempio seguente esporta la configurazione per tutti gli indirizzi IP assegnati alla macchina virtuale:

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

In alternativa, è possibile esportare la configurazione specificando solo l'indirizzo IP. Sostituire l'indirizzo IP nell'esempio seguente con l'indirizzo IP pubblico o privato per la macchina virtuale. È necessario usare la propria connettività per gli indirizzi IP privati. Immettere az ssh config -h per assistenza con questo comando.

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

È quindi possibile connettersi alla macchina virtuale tramite il normale utilizzo di OpenSSH. Connessione ion può essere eseguita tramite qualsiasi client SSH che usa OpenSSH.

Eseguire sudo con l'account di accesso di Microsoft Entra

Dopo che gli utenti a cui è stato assegnato il ruolo Amministrazione istrator della macchina virtuale hanno eseguito correttamente SSH in una macchina virtuale Linux, potranno eseguire sudo senza altri requisiti di interazione o autenticazione. Gli utenti a cui è assegnato il ruolo utente della macchina virtuale non potranno eseguire sudo.

Connessione alle macchine virtuali nei set di scalabilità di macchine virtuali

I set di scalabilità di macchine virtuali sono supportati, ma i passaggi sono leggermente diversi per l'abilitazione e la connessione alle macchine virtuali in un set di scalabilità di macchine virtuali:

  1. Creare un set di scalabilità di macchine virtuali o sceglierne uno già esistente. Abilitare un'identità gestita assegnata dal sistema per il set di scalabilità di macchine virtuali:

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Installare l'estensione Microsoft Entra nel set di scalabilità di macchine virtuali:

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

I set di scalabilità di macchine virtuali in genere non hanno indirizzi IP pubblici. È necessario avere connettività da un altro computer in grado di raggiungere la rete virtuale di Azure. Questo esempio illustra come usare l'indirizzo IP privato di una macchina virtuale in un set di scalabilità di macchine virtuali per connettersi da una macchina nella stessa rete virtuale:

az ssh vm --ip 10.11.123.456

Nota

Non è possibile determinare automaticamente gli indirizzi IP della macchina virtuale del set di scalabilità di macchine virtuali usando i --resource-group commutatori e --name .

Eseguire la migrazione dalla versione precedente (anteprima)

Se si usa la versione precedente dell'account di accesso di Microsoft Entra per Linux basato sul flusso del codice del dispositivo, completare la procedura seguente usando l'interfaccia della riga di comando di Azure:

  1. Disinstallare l'estensione AADLoginForLinux nella macchina virtuale:

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

    Nota

    La disinstallazione dell'estensione può non riuscire se sono presenti utenti Microsoft Entra attualmente connessi alla macchina virtuale. Assicurarsi che tutti gli utenti siano disconnessi per primi.

  2. Abilitare l'identità gestita assegnata dal sistema nella macchina virtuale:

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Installare l'estensione AADSSHLoginForLinux nella macchina virtuale:

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

Usare Criteri di Azure per soddisfare gli standard e valutare la conformità

Usare Criteri di Azure per:

  • Assicurarsi che l'accesso a Microsoft Entra sia abilitato per le macchine virtuali Linux nuove ed esistenti.
  • Valutare la conformità dell'ambiente su larga scala in un dashboard di conformità.

Con questa funzionalità, è possibile usare molti livelli di imposizione. È possibile contrassegnare macchine virtuali Linux nuove ed esistenti all'interno dell'ambiente in cui non è abilitato l'accesso a Microsoft Entra. È anche possibile usare Criteri di Azure per distribuire l'estensione Microsoft Entra in nuove macchine virtuali Linux in cui non è abilitato l'accesso a Microsoft Entra, nonché correggere le macchine virtuali Linux esistenti nello stesso standard.

Oltre a queste funzionalità, è possibile usare Criteri di Azure per rilevare e contrassegnare le macchine virtuali Linux con account locali non approvati creati nei computer. Per altre informazioni, vedere Criteri di Azure.

Risolvere i problemi di accesso

Usare le sezioni seguenti per correggere gli errori comuni che possono verificarsi quando si tenta di usare SSH con le credenziali di Microsoft Entra.

Non è stato possibile recuperare il token dalla cache locale

Se viene visualizzato un messaggio che indica che non è stato possibile recuperare il token dalla cache locale, è necessario eseguire az login di nuovo ed eseguire un flusso di accesso interattivo. Esaminare la sezione relativa all'accesso usando Azure Cloud Shell.

Accesso negato: ruolo di Azure non assegnato

Se viene visualizzato un errore "Ruolo di Azure non assegnato" al prompt SSH, verificare di aver configurato i criteri di controllo degli accessi in base al ruolo di Azure per la macchina virtuale che concede all'utente il ruolo di accesso della macchina virtuale Amministrazione istrator o il ruolo Accesso utente macchina virtuale. Se si verificano problemi con le assegnazioni di ruolo di Azure, vedere l'articolo Risolvere i problemi relativi al controllo degli accessi in base al ruolo di Azure.

Problemi di eliminazione dell'estensione precedente (AADLoginForLinux)

Se gli script di disinstallazione hanno esito negativo, l'estensione potrebbe rimanere bloccata in uno stato di transizione. In questo caso, l'estensione può lasciare i pacchetti che dovrebbe disinstallare durante la rimozione. In questi casi, è preferibile disinstallare manualmente i pacchetti precedenti e quindi provare a eseguire il az vm extension delete comando.

Per disinstallare i pacchetti precedenti:

  1. Accedere come utente locale con privilegi di amministratore.
  2. Assicurarsi che non siano presenti utenti connessi a Microsoft Entra. Chiamare il who -u comando per vedere chi è connesso. sudo kill <pid> Usare quindi per tutti i processi di sessione segnalati dal comando precedente.
  3. Eseguire sudo apt remove --purge aadlogin (Ubuntu/Debian), sudo yum remove aadlogin (RHEL o CentOS) o sudo zypper remove aadlogin (openSU edizione Standard o SLES).
  4. Se il comando non riesce, provare gli strumenti di basso livello con script disabilitati:
    1. Per Ubuntu/Debian, eseguire sudo dpkg --purge aadlogin. Se il problema persiste a causa dello script, eliminare il /var/lib/dpkg/info/aadlogin.prerm file e riprovare.
    2. Per tutto il resto, eseguire rpm -e --noscripts aadogin.
  5. Ripetere i passaggi da 3 a 4 per il pacchetto aadlogin-selinux.

Errori di installazione dell'estensione

L'installazione dell'estensione vm AADSSHLoginForLinux nei computer esistenti potrebbe non riuscire con uno dei codici di errore noti seguenti.

Codice di uscita diverso da zero 22

Se si ottiene il codice di uscita 22, lo stato dell'estensione vm AADSSHLoginForLinux viene visualizzato come Transizione nel portale.

Questo errore si verifica perché è necessaria un'identità gestita assegnata dal sistema.

La soluzione consiste nel:

  1. Disinstallare l'estensione non riuscita.
  2. Abilitare un'identità gestita assegnata dal sistema nella macchina virtuale di Azure.
  3. Eseguire di nuovo il comando di installazione dell'estensione.

Codice di uscita diverso da zero 23

Se si ottiene il codice di uscita 23, lo stato dell'estensione vm AADSSHLoginForLinux viene visualizzato come Transizione nel portale.

Questo errore si verifica quando l'estensione di macchina virtuale AADLoginForLinux precedente è ancora installata.

La soluzione consiste nel disinstallare l'estensione della macchina virtuale AADLoginForLinux precedente dalla macchina virtuale. Lo stato della nuova estensione della macchina virtuale AADSSHLoginForLinux passerà quindi a Provisioning completato nel portale.

Errori di installazione quando si usa un proxy HTTP

L'estensione richiede una connessione HTTP per installare i pacchetti e verificare l'esistenza di un'identità di sistema. Viene eseguito nel contesto di walinuxagent.service e richiede una modifica per informare l'agente sulle impostazioni proxy. Aprire /lib/systemd/system/walinuxagent.service il file nel computer di destinazione e aggiungere la riga seguente dopo [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"

Riavviare l'agente (sudo systemctl restart walinuxagent). Riprovare.

Il comando az ssh vm ha esito negativo con KeyError access_token

Se il az ssh vm comando non riesce, si usa una versione obsoleta del client dell'interfaccia della riga di comando di Azure.

La soluzione consiste nell'aggiornare il client dell'interfaccia della riga di comando di Azure alla versione 2.21.0 o successiva.

La connessione SSH è chiusa

Dopo che un utente accede correttamente usando az login, la connessione alla macchina virtuale tramite az ssh vm -ip <address> o az ssh vm --name <vm_name> -g <resource_group> potrebbe non riuscire con "Connessione ion chiuso da <ip_address> porta 22".

Una causa di questo errore è che l'utente non è assegnato alla macchina virtuale Amministrazione istrator Account di accesso o account di accesso utente macchina virtuale nell'ambito di questa macchina virtuale. In tal caso, la soluzione consiste nell'aggiungere l'utente a uno di questi ruoli controllo degli accessi in base al ruolo di Azure nell'ambito di questa macchina virtuale.

Questo errore può verificarsi anche se l'utente si trova in un ruolo controllo degli accessi in base al ruolo di Azure necessario, ma l'identità gestita assegnata dal sistema è stata disabilitata nella macchina virtuale. In tal caso, eseguire queste azioni:

  1. Abilitare l'identità gestita assegnata dal sistema nella macchina virtuale.
  2. Consentire il passaggio di alcuni minuti prima che l'utente tenti di connettersi tramite az ssh vm --ip <ip_address>.

problemi di Connessione ion con i set di scalabilità di macchine virtuali

Le connessioni vm con set di scalabilità di macchine virtuali possono non riuscire se le istanze del set di scalabilità eseguono un modello precedente.

L'aggiornamento delle istanze del set di scalabilità al modello più recente potrebbe risolvere il problema, soprattutto se non è stato eseguito un aggiornamento dopo l'installazione dell'estensione Microsoft Entra Login. L'aggiornamento di un'istanza applica una configurazione del set di scalabilità standard alla singola istanza.

Le istruzioni AllowGroups o DenyGroups in sshd_config causano l'esito negativo del primo accesso per gli utenti di Microsoft Entra

Se sshd_config contiene istruzioni AllowGroups o DenyGroups , il primo accesso non riesce per gli utenti di Microsoft Entra. Se l'istruzione è stata aggiunta dopo che gli utenti hanno già eseguito l'accesso, possono accedere.

Una soluzione consiste nel rimuovere AllowGroups istruzioni e DenyGroups da sshd_config.

Un'altra soluzione consiste nello spostare AllowGroups e DenyGroups in una match user sezione in sshd_config. Assicurarsi che il modello di corrispondenza escluda gli utenti di Microsoft Entra.

Ottenere l'autorizzazione negata quando si tenta di connettersi da Azure Shell a una macchina virtuale Linux Red Hat/Oracle/CentOS 7.X.

La versione del server OpenSSH nella macchina virtuale di destinazione 7.4 è troppo vecchia. Versione non compatibile con il client OpenSSH versione 8.8. Per altre informazioni, vedere Certificati RSA SHA256 che non funzionano più.

Soluzione alternativa:

  • Aggiunta dell'opzione "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" nel az ssh vm comando .
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Aggiunta dell'opzione "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" in /home/<user>/.ssh/config file.

Aggiungere nel "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" file di configurazione del client.

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

Passaggi successivi