Estensione VMAccess per Linux
L'estensione VMAccess viene usata per gestire gli utenti amministratori, configurare SSH e controllare o ripristinare i dischi nelle macchine virtuali Linux di Azure. L'estensione si integra con i modelli di Azure Resource Manager. Può anche essere richiamato usando l'interfaccia della riga di comando di Azure, Azure PowerShell, il portale di Azure e l'API REST di Azure Macchine virtuali.
Questo articolo descrive come eseguire l'estensione VMAccess dall'interfaccia della riga di comando di Azure e tramite un modello di Azure Resource Manager. Sono inoltre illustrate le procedure di risoluzione dei problemi per i sistemi Linux.
Nota
Se si usa l'estensione VMAccess per reimpostare la password della macchina virtuale dopo aver installato l'estensione Microsoft Entra Login, eseguire nuovamente l'estensione Microsoft Entra Login per riabilitare Microsoft Entra Login per la macchina virtuale.
Prerequisiti
Distribuzioni Linux supportate
Linux Distro | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Non supportato |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Non supportato |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x+ | 9.x+ |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
Suggerimenti
- VMAccess è stato progettato per ottenere nuovamente l'accesso a una macchina virtuale, dato che l'accesso viene perso. In base a questo principio, concede l'autorizzazione sudo all'account specificato nel campo nome utente. Se non si desidera che un utente ottenga le autorizzazioni sudo, accedere alla macchina virtuale e usare gli strumenti predefiniti (ad esempio, usermod, chage e così via) per gestire gli utenti senza privilegi.
- È possibile avere una sola versione dell'estensione applicata a una macchina virtuale. Per eseguire una seconda azione, aggiornare l'estensione esistente con una nuova configurazione.
- Durante un aggiornamento utente, VMAccess modifica il
sshd_config
file e ne esegue un backup in anticipo. Per ripristinare la configurazione SSH di cui è stato eseguito il backup originale, eseguire VMAccess conrestore_backup_ssh
impostato suTrue
.
Schema dell'estensione
La configurazione dell'estensione VMAccess include impostazioni per nome utente, password, chiavi SSH e così via. È possibile archiviare queste informazioni nei file di configurazione, specificarla nella riga di comando o includerla in un modello di Azure Resource Manager (ARM). Lo schema JSON seguente contiene tutte le proprietà disponibili per l'uso nelle impostazioni pubbliche e protette.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "<name>",
"apiVersion": "2023-09-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "VMAccessForLinux",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"check_disk": true,
"repair_disk": false,
"disk_name": "<disk-name>",
},
"protectedSettings": {
"username": "<username>",
"password": "<password>",
"ssh_key": "<ssh-key>",
"reset_ssh": false,
"remove_user": "<username>",
"expiration": "<expiration>",
"remove_prior_keys": false,
"restore_backup_ssh": true
}
}
}
Valori delle proprietà
Nome | Valore/Esempio | Tipo di dati |
---|---|---|
apiVersion | 01-09-2023 | data |
publisher | Microsoft.OSTCExtensions | string |
type | VMAccessForLinux | string |
typeHandlerVersion | 1,5 | int |
Valori delle proprietà settings
Nome | Tipo di dati | Descrizione |
---|---|---|
check_disk | boolean | Indica se controllare o meno il disco (facoltativo). Solo una tra check_disk e repair_disk può essere impostata su true. |
repair_disk | boolean | Indica se controllare o meno il disco (facoltativo). Solo una tra check_disk e repair_disk può essere impostata su true. |
disk_name | string | Nome del disco da ripristinare (obbligatorio quando repair_disk è true). |
username | string | Nome dell'utente da gestire (obbligatorio per tutte le azioni in un account utente). |
password | string | Password da impostare per l'account utente. |
ssh_key | string | Chiave pubblica SSH da aggiungere per l'account utente. La chiave SSH può essere in ssh-rsa formato , ssh-ed25519 o .pem . |
reset_ssh | boolean | Indica se reimpostare o meno ssh. Se true , sostituisce il file sshd_config con un file di risorse interno corrispondente alla configurazione SSH predefinita per tale distribuzione. |
remove_user | string | Nome dell'utente da rimuovere. Non è possibile usare con reset_ssh , restore_backup_ssh e password . |
expiration | string | Scadenza da impostare su per l'account, sotto forma di yyyy-mm-dd . L'impostazione predefinita non è mai. |
remove_prior_keys | boolean | Indica se rimuovere o meno le chiavi SSH precedenti durante l'aggiunta di una nuova chiave. Deve essere usato con ssh_key . |
restore_backup_ssh | boolean | Indica se ripristinare o meno l'sshd_config di backup originale. |
Distribuzione modelli
Le estensioni della macchina virtuale di Azure possono essere distribuite con modelli di Azure Resource Manager (ARM). Lo schema JSON descritto nella sezione precedente può essere usato in un modello di Resource Manager per eseguire l'estensione VMAccess durante la distribuzione del modello. È possibile trovare un modello di esempio che include l'estensione VMAccess in GitHub.
La configurazione JSON per un'estensione macchina virtuale deve essere annidata all'interno del frammento di risorsa della macchina virtuale del modello, in particolare "resources": []
per l'oggetto per il modello di macchina virtuale e per un set di scalabilità di macchine virtuali nell'oggetto "virtualMachineProfile":"extensionProfile":{"extensions" :[]
.
Distribuzione dell'interfaccia della riga di comando di Azure
Uso dei comandi utente della macchina virtuale dell'interfaccia della riga di comando di Azure
I comandi dell'interfaccia della riga di comando seguenti in az vm user usano l'estensione VMAccess. Per usare questi comandi, è necessario installare l'interfaccia della riga di comando di Azure più recente e accedere a un account Azure usando az login.
Aggiornare la chiave SSH
Nell'esempio seguente viene aggiornata la chiave SSH per l'utente azureUser
nella macchina virtuale denominata myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Nota
Il az vm user update
comando aggiunge il testo della nuova chiave pubblica al ~/.ssh/authorized_keys
file per l'utente amministratore nella macchina virtuale. Questo comando non sostituisce o rimuove chiavi SSH esistenti. Questo comando non rimuove le chiavi precedenti impostate in fase di distribuzione o gli aggiornamenti successivi usando l'estensione VMAccess.
Reimpostazione della password
L'esempio seguente ripristina la password per l'utente azureUser
nella VM denominata myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
Riavviare SSH
L'esempio seguente riavvia il daemon SSH e reimposta la configurazione SSH sui valori predefiniti in una macchina virtuale denominata myVM
:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Nota
Il az vm user reset-ssh
comando sostituisce il file sshd_config con un file di configurazione predefinito dalla directory delle risorse interne. Questo comando non ripristina la configurazione SSH originale trovata nella macchina virtuale.
Creare un utente amministrativo/sudo
Nell'esempio seguente viene creato un utente denominato myNewUser
con autorizzazioni sudo. L'account usa una chiave SSH per l'autenticazione nella macchina virtuale denominata myVM
. Questo metodo consente di ottenere nuovamente l'accesso a una macchina virtuale quando le credenziali correnti vengono perse o dimenticate. Come procedura consigliata gli account con autorizzazioni sudo devono presentare limitazioni.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Eliminare un utente
L'esempio seguente elimina un utente denominato myNewUser
nella VM denominata myVM
:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Uso dei comandi dell'estensione VM/VMSS dell'interfaccia della riga di comando di Azure
È anche possibile usare i comandi az vm extension set e az vmss extension set per eseguire l'estensione VMAccess con la configurazione specificata.
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--settings '{"check_disk":true}'
--protected-settings '{"username":"user1","password":"userPassword"}'
I --settings
parametri e --protected-settings
accettano anche percorsi di file JSON. Ad esempio, per aggiornare la chiave pubblica SSH di un utente, creare un file JSON denominato update_ssh_key.json
e aggiungere le impostazioni nel formato seguente. Sostituire i valori all'interno del file con le proprie informazioni:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
Eseguire l'estensione VMAccess tramite il comando seguente:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--protected-settings update_ssh_key.json
Distribuzione con Azure PowerShell
Azure PowerShell può essere usato per distribuire l'estensione VMAccess in una macchina virtuale o in un set di scalabilità di macchine virtuali esistente. È possibile distribuire l'estensione in una macchina virtuale eseguendo:
$username = "<username>"
$sshKey = "<cert-contents>"
$settings = @{"check_disk" = $true};
$protectedSettings = @{"username" = $username; "ssh_key" = $sshKey};
Set-AzVMExtension -ResourceGroupName "<resource-group>" `
-VMName "<vm-name>" `
-Location "<location>" `
-Publisher "Microsoft.OSTCExtensions" `
-ExtensionType "VMAccessForLinux" `
-Name "VMAccessForLinux" `
-TypeHandlerVersion "1.5" `
-Settings $settings `
-ProtectedSettings $protectedSettings
È anche possibile specificare e modificare le impostazioni di estensione usando stringhe:
$username = "<username>"
$sshKey = "<cert-contents>"
$settingsString = '{"check_disk":true}';
$protectedSettingsString = '{"username":"' + $username + '","ssh_key":"' + $sshKey + '"}';
Set-AzVMExtension -ResourceGroupName "<resource-group>" `
-VMName "<vm-name>" `
-Location "<location>" `
-Publisher "Microsoft.OSTCExtensions" `
-ExtensionType "VMAccessForLinux" `
-Name "VMAccessForLinux" `
-TypeHandlerVersion "1.5" `
-SettingString $settingsString `
-ProtectedSettingString $protectedSettingsString
Per eseguire la distribuzione in un set di scalabilità di macchine virtuali, eseguire il comando seguente:
$resourceGroupName = "<resource-group>"
$vmssName = "<vmss-name>"
$protectedSettings = @{
"username" = "azureUser"
"password" = "userPassword"
}
$publicSettings = @{
"repair_disk" = $true
"disk_name" = "<disk_name>"
}
$vmss = Get-AzVmss `
-ResourceGroupName $resourceGroupName `
-VMScaleSetName $vmssName
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
-Name "<extension-name>" `
-Publisher "Microsoft.OSTCExtensions" `
-Type "VMAccessForLinux" `
-TypeHandlerVersion "1.5"" `
-AutoUpgradeMinorVersion $true `
-Setting $publicSettings `
-ProtectedSetting $protectedSettings
Update-AzVmss `
-ResourceGroupName $resourceGroupName `
-Name $vmssName `
-VirtualMachineScaleSet $vmss
Risoluzione dei problemi e supporto
I log dell'estensione VMAccess esistono localmente nella macchina virtuale e sono più informativi per la risoluzione dei problemi.
Ufficio | Descrizione |
---|---|
/var/log/waagent.log | Contiene i log dall'agente Linux e mostra quando si è verificato un aggiornamento dell'estensione. È possibile controllarlo per assicurarsi che l'estensione sia stata eseguita. |
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | L'estensione VMAccess genera log, disponibili qui. La directory contiene CommandExecution.log dove è possibile trovare ogni comando eseguito insieme al relativo risultato, insieme extension.log a , che contiene singoli log per ogni esecuzione. |
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-most< recent version>/config/* | Configurazione e file binari per l'estensione vm VMAccess. |
È anche possibile recuperare lo stato di esecuzione dell'estensione VMAccess, insieme ad altre estensioni in una determinata macchina virtuale, eseguendo il comando seguente:
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Per altre informazioni, è possibile contattare gli esperti di Azure nel supporto della community di Azure. In alternativa, è possibile archiviare un evento imprevisto di supporto tecnico di Azure. Passare al supporto di Azure e selezionare Ottenere supporto. Per altre informazioni sul supporto tecnico di Azure, vedere le domande frequenti sui piani di supporto tecnico di Azure.
Passaggi successivi
Per visualizzare il codice, le versioni correnti e altre informazioni, vedere VMAccess Linux - GitHub.