Dela via


VMAccess-tillägg för Linux

VMAccess-tillägget används för att hantera administrativa användare, konfigurera SSH och kontrollera eller reparera diskar på virtuella Azure Linux-datorer. Tillägget integreras med Azure Resource Manager-mallar. Den kan också anropas med hjälp av Azure CLI, Azure PowerShell, Azure-portalen och REST-API:et för Virtuella Azure-datorer.

Den här artikeln beskriver hur du kör VMAccess-tillägget från Azure CLI och via en Azure Resource Manager-mall. Den här artikeln innehåller även felsökningssteg för Linux-system.

Kommentar

Om du använder TILLÄGGET VMAccess för att återställa lösenordet för den virtuella datorn när du har installerat Tillägget Microsoft Entra-inloggning kör du tillägget Microsoft Entra-inloggning igen för att återaktivera Microsoft Entra-inloggning för den virtuella datorn.

Förutsättningar

Linux-distributioner som stöds

Linux-distribution 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+ Stöds inte
Oracle Linux 6.4+, 7.x+, 8.x+ Stöds inte
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+

Tips

  • VMAccess har utformats för att återfå åtkomsten till en virtuell dator eftersom åtkomsten går förlorad. Baserat på den här principen ger den sudo-behörighet till kontot som anges i användarnamnsfältet. Om du inte vill att en användare ska få sudo-behörigheter loggar du in på den virtuella datorn och använder inbyggda verktyg (till exempel usermod, chage osv.) för att hantera oprivilegierade användare.
  • Du kan bara ha en version av tillägget som tillämpas på en virtuell dator. Om du vill köra en andra åtgärd uppdaterar du det befintliga tillägget med en ny konfiguration.
  • Under en användaruppdatering ändrar sshd_config VMAccess filen och tar en säkerhetskopia av den i förväg. Om du vill återställa den ursprungliga säkerhetskopierade SSH-konfigurationen kör du VMAccess med restore_backup_ssh inställt på True.

Tilläggsschema

Konfigurationen för VMAccess-tillägget innehåller inställningar för användarnamn, lösenord, SSH-nycklar osv. Du kan lagra den här informationen i konfigurationsfiler, ange den på kommandoraden eller inkludera den i en Arm-mall (Azure Resource Manager). Följande JSON-schema innehåller alla tillgängliga egenskaper som kan användas i offentliga och skyddade inställningar.

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

Egenskapsvärden

Name Värde/exempel Datatyp
apiVersion 2023-09-01 datum
förläggare Microsoft.OSTCExtensions sträng
type VMAccessForLinux sträng
typeHandlerVersion 1.5 heltal

Egenskapsvärden för inställningar

Name Datatyp beskrivning
check_disk boolean Om du vill kontrollera disken (valfritt). Endast en mellan check_disk och repair_disk kan anges till true.
repair_disk boolean Om du vill kontrollera disken (valfritt). Endast en mellan check_disk och repair_disk kan anges till true.
disk_name sträng Namnet på disken som ska repareras (krävs när repair_disk är sant).
användarnamn sträng Namnet på den användare som ska hanteras (krävs för alla åtgärder på ett användarkonto).
password sträng Lösenordet som ska anges för användarkontot.
ssh_key sträng Den offentliga SSH-nyckel som ska läggas till för användarkontot. SSH-nyckeln kan vara i ssh-rsa, ssh-ed25519eller .pem format.
reset_ssh boolean Om SSH ska återställas eller inte. Om trueersätter den den sshd_config filen med en intern resursfil som motsvarar standard-SSH-konfigurationen för den distributionen.
remove_user sträng Namnet på användaren som ska tas bort. Det går inte att använda med reset_ssh, restore_backup_sshoch password.
upphörande sträng Förfallodatum som ska anges till för kontot, i form av yyyy-mm-dd. Standardvärdet är aldrig.
remove_prior_keys boolean Om du vill ta bort gamla SSH-nycklar när du lägger till en ny. Måste användas med ssh_key.
restore_backup_ssh boolean Om den ursprungliga säkerhetskopierade sshd_config ska återställas eller inte.

Malldistribution

Azure VM-tillägg kan distribueras med ARM-mallar (Azure Resource Manager). JSON-schemat som beskrivs i föregående avsnitt kan användas i en ARM-mall för att köra VMAccess-tillägget under mallens distribution. Du hittar en exempelmall som innehåller VMAccess-tillägget på GitHub.

JSON-konfigurationen för ett tillägg för en virtuell dator måste vara kapslad i mallens resursfragment för den virtuella datorn, specifikt "resources": [] objekt för mallen för den virtuella datorn och för en vm-skalningsuppsättning under "virtualMachineProfile":"extensionProfile":{"extensions" :[] objekt.

Azure CLI-distribution

Använda användarkommandon för virtuella Azure CLI-datorer

Följande CLI-kommandon under az vm user use the VMAccess Extension. Om du vill använda dessa kommandon måste du installera den senaste Azure CLI och logga in på ett Azure-konto med az login.

Uppdatera SSH-nyckel

I följande exempel uppdateras SSH-nyckeln för användaren azureUser på den virtuella datorn med namnet myVM:

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

Kommentar

Kommandot az vm user update lägger till den nya offentliga nyckeltexten i ~/.ssh/authorized_keys filen för administratörsanvändaren på den virtuella datorn. Det här kommandot ersätter eller tar inte bort några befintliga SSH-nycklar. Det här kommandot tar inte bort tidigare nycklar som angetts vid distributionstiden eller efterföljande uppdateringar med hjälp av VMAccess-tillägget.

Återställ lösenord

I följande exempel återställs lösenordet för användaren azureUser på den virtuella datorn med namnet myVM:

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --password myNewPassword

Starta om SSH

I följande exempel startas SSH-daemonen om och SSH-konfigurationen återställs till standardvärden på en virtuell dator med namnet myVM:

az vm user reset-ssh \
  --resource-group myResourceGroup \
  --name myVM

Kommentar

Kommandot az vm user reset-ssh ersätter sshd_config-filen med en standardkonfigurationsfil från den interna resurskatalogen. Det här kommandot återställer inte den ursprungliga SSH-konfigurationen som hittades på den virtuella datorn.

Skapa en administrativ/sudo-användare

I följande exempel skapas en användare med namnet myNewUser med sudo-behörigheter. Kontot använder en SSH-nyckel för autentisering på den virtuella datorn med namnet myVM. Den här metoden hjälper dig att återfå åtkomsten till en virtuell dator när aktuella autentiseringsuppgifter går förlorade eller glöms bort. Vi rekommenderar att konton med sudo-behörigheter begränsas.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

Ta bort en användare

I följande exempel tas en användare med namnet myNewUser på den virtuella datorn med namnet myVM:

az vm user delete \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser

Använda azure CLI VM/VMSS-tilläggskommandon

Du kan också använda kommandot az vm extension set och az vmss extension set för att köra VMAccess-tillägget med den angivna konfigurationen.

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

Parametrarna --settings och --protected-settings accepterar även JSON-filsökvägar. Om du till exempel vill uppdatera den offentliga SSH-nyckeln för en användare skapar du en JSON-fil med namnet update_ssh_key.json och lägger till inställningar i följande format. Ersätt värdena i filen med din egen information:

{
  "username":"azureuser",
  "ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}

Kör VMAccess-tillägget med följande kommando:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --protected-settings update_ssh_key.json

Azure PowerShell-distribution

Azure PowerShell kan användas för att distribuera VMAccess-tillägget till en befintlig virtuell dator eller vm-skalningsuppsättning. Du kan distribuera tillägget till en virtuell dator genom att köra:

$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

Du kan också ange och ändra tilläggsinställningar med hjälp av strängar:

$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

Om du vill distribuera till en VM-skalningsuppsättning kör du följande kommando:

$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

Felsökning och support

VMAccess-tilläggsloggarna finns lokalt på den virtuella datorn och är mest informativa när det gäller felsökning.

Plats beskrivning
/var/log/waagent.log Innehåller loggar från Linux-agenten och visar när en uppdatering av tillägget inträffade. Vi kan kontrollera det för att säkerställa att tillägget kördes.
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* VMAccess-tillägget skapar loggar som du hittar här. Katalogen innehåller CommandExecution.log där du kan hitta varje kommando som körs tillsammans med resultatet, tillsammans med extension.log, som innehåller enskilda loggar för varje körning.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-senaste< version>/config/* Konfigurationen och binärfilerna för VMAccess VM-tillägget.

Du kan också hämta körningstillståndet för VMAccess-tillägget, tillsammans med andra tillägg på en viss virtuell dator, genom att köra följande kommando:

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

Om du vill ha mer hjälp kan du kontakta Azure-experterna på Azure Community Support. Du kan också skapa en Azure-supportincident. Gå till Azure-support och välj Hämta support. Mer information om Azure Support finns i Vanliga frågor och svar om Azure-supportplaner.

Nästa steg

Mer information om koden, aktuella versioner och mer dokumentation finns i VMAccess Linux – GitHub.