Accedere a una macchina virtuale Linux in Azure usando Microsoft Entra ID e OpenSSH
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 Microsoft Entra ID 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 (RBAC) 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.
Vi sono molti vantaggi di sicurezza dell'uso di Microsoft Entra ID con l'autenticazione basata su certificati OpenSSH per accedere alle macchine virtuali Linux in Azure. Essi 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 della proliferazione incontrollata di chiavi pubbliche SSH non aggiornate 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 criteri di durata e complessità della password per Microsoft Entra ID.
- Con RBAC, è possibile specificare chi può accedere a una macchina virtuale (VM) come utente normale o con privilegi di amministratore. Quando gli utenti si uniscono al team, è possibile aggiornare i criteri del 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 gli account utente vengono disabilitati o rimossi da Microsoft Entra ID, 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.
L’accesso alle macchine virtuali Linux con Microsoft Entra ID funziona per i clienti che usano Active Directory Federation Services.
Distribuzioni di Linux e aree di Azure supportate
Le seguenti distribuzioni Linux sono attualmente supportate per i dispiegamenti in un'area supportata:
Distribuzione | Versione |
---|---|
Common Base 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) | Da RHEL 7.4 a RHEL 7.9, RHEL 8.3+, RHEL 9.0+ |
Rocky | Rocky 8, Rocky 9 |
SUSE Linux Enterprise Server (SLES) | SLES 12, SLES 15.1+ |
Ubuntu | Da Ubuntu 16.04 a Ubuntu 24.04 |
Per questa funzionalità, sono attualmente supportate le aree di Azure seguenti:
- Azure Global
- Azure per enti pubblici
- Microsoft Azure gestito da 21Vianet
L'uso dell'estensione SSH per l'interfaccia della riga di comando di Azure nei cluster di servizio Azure Kubernetes (AKS) non è supportato. Per altre informazioni, vedere i 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, è necessaria 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 seguenti requisiti di rete, macchina virtuale e client (client SSH).
Rete
La configurazione della rete della VM deve consentire l'accesso in uscita ai seguenti endpoint sulla porta TCP 443.
Azure Global:
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 modulare).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 si seleziona l'opzione di accesso con 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
eaadsshlogin-selinux
(in base alle esigenze). Questi pacchetti vengono installati con l'estensione della macchina virtuale AADSSHLoginForLinux. L'estensione viene installata quando si usa il 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
Verificare che i client soddisfino 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 versioni successive) con OpenSSH (incluso in Windows 10, versione 1803 o successive) 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é è 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. (Funziona anche l'inoltro SSH o ProxyCommand a un computer con connettività.)
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, è innanzitutto necessario abilitare l'opzione di accesso di Microsoft Entra per la macchina virtuale Linux. Poi, configurare le assegnazioni di ruolo di Azure per gli utenti autorizzati ad accedere alla macchina virtuale. Infine, si usa il client SSH che supporta OpenSSH, come l'interfaccia della riga di comando di Azure o Azure Cloud Shell, per connettersi tramite SSH alla macchina virtuale Linux.
Vi sono due modi per abilitare l'accesso a Microsoft Entra per la macchina virtuale Linux:
- L’esperienza del portale di Azure durante la creazione di una macchina virtuale Linux
- L’esperienza di Azure Cloud Shell durante la creazione di una macchina virtuale Linux o l'uso di una macchina virtuale esistente
Portale di Azure
È possibile abilitare l'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 Long Term Support (LTS) in Azure con l’accesso di Microsoft Entra:
- Accedere al portale di Azure usando un account autorizzato ad accedere per la creazione di macchine virtuali, e poi selezionare + Crea una risorsa.
- Selezionare Crea in Ubuntu Server 18.04 LTS nella visualizzazione dei prodotti del Marketplace più richiesti.
- Nella scheda Gestione:
- Selezionare la casella di spunta Accedi con Microsoft Entra ID.
- Verificare che la casella di spunta Identità gestita assegnata dal sistema sia selezionata.
- 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 il tasto Invio per eseguirlo.
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, per questo articolo è necessario eseguire la 2.22.1 o successive. 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.
- Creare un gruppo di risorse eseguendo az group create.
- Creare una macchina virtuale eseguendo il comando az vm create. Usare una distribuzione supportata in un'area supportata.
- Installare l'estensione della macchina virtuale di accesso a Microsoft Entra usando az vm extension set.
L'esempio seguente distribuisce una macchina virtuale e quindi installa l'estensione per abilitare l’accesso di Microsoft Entra per una macchina virtuale Linux. Le estensioni della macchina virtuale sono piccole applicazioni che eseguono attività di configurazione e automazione post-distribuzione nelle macchine virtuali di Azure. 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 tramite 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 valore provisioningState
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 seguenti ruoli di Azure per determinare chi può accedere alla macchina virtuale. Per assegnare questi ruoli, è necessario avere il ruolo di Amministratore di accesso ai dati della macchina virtuale o qualsiasi ruolo che includa l'azione Microsoft.Authorization/roleAssignments/write
, ad esempio il ruolo di Amministratore di controllo degli accessi in base al ruolo. Tuttavia, se si usa un ruolo diverso da Amministratore di accesso ai dati della macchina virtuale, è consigliabile aggiungere una condizione per ridurre l'autorizzazione per creare assegnazioni di ruolo.
- Accesso amministratore alle macchine virtuali: gli utenti ai quali è stato assegnato questo ruolo possono accedere a una macchina virtuale di Azure con privilegi di amministratore.
- Accesso utente alle macchine virtuali: gli utenti ai quali è stato assegnato questo ruolo possono accedere a una macchina virtuale di Azure con i normali privilegi utente.
Per consentire a un utente di accedere a una macchina virtuale tramite SSH, è necessario assegnare il ruolo di Accesso amministratore alle macchina virtuale o Account di accesso utente alla macchina virtuale nel gruppo di risorse che contiene la macchina virtuale e la rete virtuale, l'interfaccia di rete, l'indirizzo IP pubblico o le risorse del servizio di bilanciamento del carico a essa associati.
Un utente di Azure a cui è stato assegnato il ruolo di Proprietario o di Collaboratore per una macchina virtuale non dispone automaticamente dei privilegi per accedere alla macchina virtuale su SSH tramite Microsoft Entra. 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.
Vi sono 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 Accesso amministratore alle macchine virtuali e Accesso utente alle macchine virtuali usano dataActions
e possono essere assegnati al gruppo di gestione, alla sottoscrizione, al gruppo di risorse o all'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 ruoli di Azure per sottoscrizione.
Portale di Azure
Per configurare le assegnazioni di ruolo per le macchine virtuali Linux abilitate per Microsoft Entra ID:
Per il gruppo di risorse, selezionare il gruppo di risorse che contiene la macchina virtuale e la rete virtuale, l'interfaccia di rete, l'indirizzo IP pubblico o la risorsa di bilanciamento del carico ad essa associata.
Seleziona Controllo di accesso (IAM).
Selezionare Aggiungi>Aggiungi assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.
Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Impostazione Valore Ruolo Accesso amministratore alle macchine virtuali o Accesso utente alle macchine virtuali Assegna accesso a Utente, gruppo, entità servizio o identità gestita
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 Accesso amministratore alle macchine virtuali alla macchina virtuale per l'utente di Azure corrente. Si ottiene il nome utente dell'account di Azure attuale usando az account show e viene impostato l'ambito per la macchina virtuale creata in un passaggio precedente con az vm show.
È anche possibile assegnare l’ambito a livello di un grupp di risorse o di sottoscrizione. Si applicano le normali autorizzazioni ereditate per il 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 RBAC 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 all'interfaccia della riga di comando di Azure:
az extension add --name ssh
La versione minima necessaria per l'estensione è 0.1.4. Verificare la versione installata usando il comando seguente:
az extension show --name ssh
Imporre i Criteri di accesso condizionale
È possibile imporre i criteri di accesso condizionale abilitati con l'account di accesso Microsoft Entra, come:
- Richiedere l'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 che appare 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 presente nel tenant:
- Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come Amministratore applicazione cloud.
- Passare a Identità>Applicazioni>Applicazioni aziendali.
- Rimuovere i filtri per vedere 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 tramite 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
. L'esempio seguente risolve 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 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 effettuato l'accesso alla macchina virtuale Linux con le autorizzazioni del ruolo assegnato, ad esempio come utente della macchina virtuale oppure amministratore della macchina virtuale. Se all'account utente viene assegnato il ruolo Accesso amministratore alle macchine virtuali, è possibile usare sudo per eseguire i comandi che richiedono i 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 conchiglia nell'angolo in alto a destra del portale di Azure.
Cloud Shell si connette automaticamente a una sessione nel contesto dell'utente connesso. Eseguire di nuovo az login
ed esaminare il flusso di accesso interattivo:
az login
È quindi possibile usare i comandi az ssh vm
normali 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 di 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 legate 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 o di amministratore di macchina virtuale. Assegnare autorizzazioni a livello di gruppo di risorse o sottoscrizione.
L'esempio seguente assegnerà i diritti di amministratore della macchina virtuale all'entità servizio a livello di gruppo di risorse. Sostituire i segnaposto per ID oggetto dell’entità servizio, l’ID di 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 all'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
L’accesso alle macchine virtuali Linux di Azure con Microsoft Entra ID supporta l'esportazione del certificato OpenSSH e della configurazione. 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 della 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. La connessione può essere effettuata tramite qualsiasi client SSH che usa OpenSSH.
Eseguire sudo con l’accesso di Microsoft Entra
Dopo che gli utenti a cui è stato assegnato il ruolo di amministratore 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.
Connettersi a VM in 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:
Creare un set di scalabilità di macchine virtuali o sceglierne uno già esistente. Abilitare l'identità gestita assegnata dal sistema per il set di scalabilità di macchine virtuali:
az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
Installare l'estensione di 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
In genere, i set di scalabilità di macchine virtuali non dispongono di indirizzi IP pubblici. È necessario avere una connettività da un altro computer in grado di raggiungere la rete virtuale di Azure. Questo esempio mostra 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 le opzioni --resource-group
e --name
.
Eseguire la migrazione dalla versione precedente (anteprima)
Se si usa la versione precedente dell'account di accesso di Microsoft Entra per Linux che era basato sul flusso del codice del dispositivo, completare la seguente procedura usando l'interfaccia della riga di comando di Azure:
Disinstallare l'estensione AADLoginForLinux nella macchina virtuale:
az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
Nota
La disinstallazione dell'estensione può avere esito negativo se sono presenti utenti di Microsoft Entra attualmente connessi alla macchina virtuale. Assicurarsi innanzitutto che tutti gli utenti siano disconnessi.
Abilitare l'identità gestita assegnata dal sistema della macchina virtuale:
az vm identity assign -g myResourceGroup -n myVm
Installare l'estensione AADSSHLoginForLinux nella macchina virtuale:
az vm extension set \ --publisher Microsoft.Azure.ActiveDirectory \ --name AADSSHLoginForLinux \ --resource-group myResourceGroup \ --vm-name myVM
Usare i 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.
In aggiunta a queste funzionalità, è possibile usare Criteri di Azure per rilevare e segnalare le macchine virtuali Linux con account locali non approvati creati nei computer. Per altre informazioni, consultare i 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.
Impossibile recuperare il token dalla cache locale
Se viene visualizzato un messaggio che dice che non è stato possibile recuperare il token dalla cache locale, è necessario eseguire di nuovo az login
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” nel prompt SSH, verificare di aver configurato i criteri RBAC di Azure per la macchina virtuale che concede all'utente il ruolo Accesso amministratore alle macchine virtuali o Accesso utente alle macchine virtuali. 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 nell’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 queste circostanze, è preferibile disinstallare manualmente i pacchetti precedenti e poi provare a eseguire il comando az vm extension delete
.
Per disinstallare i pacchetti precedenti:
- Accedere come utente locale con privilegi di amministratore.
- Assicurarsi che non siano presenti utenti connessi a Microsoft Entra. Chiamare il comando
who -u
per vedere chi è connesso. Poi usaresudo kill <pid>
per tutti i processi di sessione segnalati dal comando precedente. - Eseguire
sudo apt remove --purge aadlogin
(Ubuntu/Debian),sudo yum remove aadlogin
(RHEL) osudo zypper remove aadlogin
(openSUSE o SLES). - Se il comando ha esito negativo, provare gli strumenti di basso livello con script disabilitati:
- Per Ubuntu/Debian, eseguire
sudo dpkg --purge aadlogin
. Se il problema persiste a causa dello script, eliminare il file/var/lib/dpkg/info/aadlogin.prerm
e riprovare. - Per tutto il resto, eseguire
rpm -e --noscripts aadogin
.
- Per Ubuntu/Debian, eseguire
- Ripetere i passaggi 3 e 4 per il pacchetto
aadlogin-selinux
.
Errori di installazione dell'estensione
L'installazione dell'estensione AADSSHLoginForLinux della macchina virtuale nei computer esistenti potrebbe avere esito negativo con uno dei seguenti codici di errore noti.
Codice di uscita 22 diverso da zero
Se si ottiene il codice di uscita 22, lo stato dell'estensione AADSSHLoginForLinux della macchina virtuale viene visualizzato come In transizione nel portale.
Questo errore si verifica perché è necessaria un'identità gestita assegnata dal sistema.
La soluzione è:
- Disinstallare l'estensione non riuscita.
- Abilitare un'identità gestita assegnata dal sistema sulla VM di Azure.
- Eseguire di nuovo il comando di installazione dell'estensione.
Codice di uscita 23 diverso da zero
Se si ottiene il codice di uscita 23, lo stato dell'estensione AADSSHLoginForLinux della macchina virtuale viene visualizzato come In transizione nel portale.
Questo errore si verifica quando l'estensione AADLoginForLinux precedente della macchina virtuale è ancora installata.
La soluzione è disinstallare l'estensione AADLoginForLinux precedente da tale macchina virtuale. Lo stato della nuova estensione AADSSHLoginForLinux della macchina virtuale passerà quindi a Provisioning completato nel portale.
Errori di installazione durante l’utilizzo di un proxy HTTP
L'estensione richiede una connessione HTTP per installare i pacchetti e verificare l'esistenza di un'identità di sistema. Si esegue nel contesto di walinuxagent.service
e richiede una modifica per informare l'agente sulle impostazioni proxy. Aprire il file /lib/systemd/system/walinuxagent.service
nel computer di destinazione e aggiungere la riga successiva 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
). Ora, provare di nuovo.
Il comando az ssh vm ha esito negativo con KeyError access_token
Se il comando az ssh vm
ha esito negativo, si sta usando una versione obsoleta del client dell'interfaccia della riga di comando di Azure.
La soluzione è aggiornare il client dell'interfaccia della riga di comando di Azure alla versione 2.21.0 o successive.
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 avere esito negativo con "Connessione chiusa da <ip_address> porta 22".
Una causa di questo errore è che l'utente non è assegnato al ruolo di Accesso amministratore della macchina virtuale o Accesso utente della macchina virtuale nell'ambito di questa macchina virtuale. In tal caso, la soluzione è aggiungere l'utente a uno di questi ruoli RBAC 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:
- Abilitare l'identità gestita assegnata dal sistema della macchina virtuale.
- Lasciar passare alcuni minuti prima che l'utente tenti di connettersi usando
az ssh vm --ip <ip_address>
.
Problemi di connessione con i set di scalabilità di macchine virtuali
Le connessioni della macchina virtuale con i set di scalabilità di macchine virtuali possono avere esito negativo se le istanze del set di scalabilità stanno eseguendo 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 di accesso Microsoft Entra. 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 ha esito negativo per gli utenti di Microsoft Entra. Se l'istruzione è stata aggiunta dopo che gli utenti hanno già eseguito l'accesso, tale accesso è possibile.
Una soluzione è rimuovere le istruzioni AllowGroups
e DenyGroups
da sshd_config.
Un'altra soluzione è spostare AllowGroups
e DenyGroups
in una sezione match user
in sshd_config. Assicurarsi che il modello di corrispondenza escluda gli utenti di Microsoft Entra.
Ricevere un messaggio di Autorizzazione negata quando si tenta di connettersi da Azure Shell alla macchina virtuale Linux Red Hat/Oracle 7.X.
La versione del server OpenSSH nella macchina virtuale di destinazione 7.4 è troppo vecchia. Versione incompatibile con il client OpenSSH versione 8.8. Per altre informazioni, fare riferimento a Certificati RSA SHA256 che non funzionano più.
Soluzione alternativa:
- Aggiunta dell'opzione
"PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
nelaz 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 "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com"
nel file di configurazione del client.
Host *
PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com