Delen via


VMAccess-extensie voor Linux

De VMAccess-extensie wordt gebruikt voor het beheren van gebruikers met beheerdersrechten, het configureren van SSH en het controleren of herstellen van schijven op virtuele Azure Linux-machines. De extensie kan worden geïntegreerd met Azure Resource Manager-sjablonen. Het kan ook worden aangeroepen met behulp van Azure CLI, Azure PowerShell, Azure Portal en de REST API van Azure Virtual Machines.

In dit artikel wordt beschreven hoe u de VMAccess-extensie uitvoert vanuit de Azure CLI en via een Azure Resource Manager-sjabloon. Dit artikel bevat ook stappen voor probleemoplossing voor Linux-systemen.

Opmerking

Als u de VMAccess-extensie gebruikt om het wachtwoord van uw VIRTUELE machine opnieuw in te stellen nadat u de Microsoft Entra-aanmeldingsextensie hebt geïnstalleerd, voert u de Microsoft Entra-aanmeldingsextensie opnieuw uit om microsoft Entra-aanmelding opnieuw in te schakelen voor uw virtuele machine.

Opmerking

Probeer VM-hulp voor snellere diagnostische gegevens. U wordt aangeraden VM-hulp uit te voeren voor Windows of VM-hulp voor Linux. Met deze diagnostische hulpprogramma's op basis van scripts kunt u veelvoorkomende problemen identificeren die van invloed zijn op de Azure VM-gastagent en de algehele VM-status.

Als u prestatieproblemen ondervindt met virtuele machines, voert u deze hulpprogramma's uit voordat u contact op neemt met de ondersteuning.

Vereiste voorwaarden

Ondersteunde Linux-distributies

Uitgever Distributie x64 ARM64
Alma Linux Community Alma Linux 8.x+, 9.x+ 8.x+, 9.x+
Credativ Debian 10+ 11.x+
Kinvolk Flatcar Linux 3374.2.x+ 3374.2.x+
Microsoft Azure Linux 2.x 2.x
openSUSE-project openSUSE 12.3+ niet ondersteund
Oracle Oracle Linux 6.4+, 7.x+, 8.x+ niet ondersteund
Red Hat Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ 8.6+, 9.0+, 10.x+
CIQ Rocky Linux 9.x+ 9.x+
SUSE SLES 12.x+, 15.x+ 15.x SP4+
Canoniek Ubuntu (LTS-releases) 18.04+, 20.04+, 22.04+, 24.04+ 20.04+, 22.04+, 24.04+

Tips

  • VMAccess is ontworpen om weer toegang te krijgen tot een VIRTUELE machine, omdat de toegang verloren gaat. Op basis van dit principe verleent het sudo-machtiging aan het account dat is opgegeven in het veld gebruikersnaam. Als u niet wilt dat een gebruiker sudo-machtigingen krijgt, meldt u zich aan bij de VIRTUELE machine en gebruikt u ingebouwde hulpprogramma's (bijvoorbeeld usermod, change, enzovoort) om onbevoegde gebruikers te beheren.
  • U kunt slechts één versie van de extensie toepassen op een virtuele machine. Als u een tweede actie wilt uitvoeren, werkt u de bestaande extensie bij met een nieuwe configuratie.
  • Tijdens een gebruikersupdate wijzigt VMAccess het sshd_config-bestand en maakt er vooraf een back-up van. Het verandert ChallengeResponseAuthentication in no en PasswordAuthentication in yes. Als u de oorspronkelijke SSH-configuratie van een back-up wilt herstellen, voert u VMAccess uit met restore_backup_ssh ingesteld op True.

Extensieschema

De configuratie van de VMAccess-extensie bevat instellingen voor gebruikersnaam, wachtwoorden, SSH-sleutels, enzovoort. U kunt deze informatie opslaan in configuratiebestanden, deze opgeven op de opdrachtregel of opnemen in een ARM-sjabloon (Azure Resource Manager). Het volgende JSON-schema bevat alle eigenschappen die beschikbaar zijn voor gebruik in openbare en beveiligde instellingen.

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

Vastgoedwaarden

Naam Waarde/voorbeeld Gegevenssoort
apiVersion 2023-09-01 datum
uitgever Microsoft.OSTCExtensions touw
soort VMAccessForLinux touw
typehandler-versie 1.5 int (integer)

Instellingenwaarden

Naam Gegevenssoort Beschrijving
check_disk booleaan Of u de schijf al dan niet wilt controleren (optioneel). Slechts één van tussen check_disk en repair_disk kan op 'waar' worden ingesteld.
repareer_schijf booleaan Of u de schijf al dan niet wilt controleren (optioneel). Slechts één van tussen check_disk en repair_disk kan op 'waar' worden ingesteld.
schijf_naam touw De naam van de schijf die moet worden hersteld (vereist wanneer repair_disk waar).
gebruikersnaam touw De naam van de gebruiker die moet worden beheerd (vereist voor alle acties op een gebruikersaccount).
wachtwoord touw Het wachtwoord dat moet worden ingesteld voor het gebruikersaccount.
ssh_key touw De openbare SSH-sleutel die moet worden toegevoegd voor het gebruikersaccount. De SSH-sleutel kan in ssh-rsa, ssh-ed25519 of .pem formaat zijn.
reset_ssh booleaan Of u de SSH al dan niet opnieuw wilt instellen. Als truedit het sshd_config-bestand vervangt door een intern bronbestand dat overeenkomt met de standaard-SSH-configuratie voor die distributie.
gebruiker_verwijderen touw De naam van de gebruiker die u wilt verwijderen. Kan niet worden gebruikt met reset_ssh, restore_backup_sshen password.
afloop touw Vervaldatum die moet worden ingesteld voor het account, in de vorm van yyyy-mm-dd. Standaard op nooit.
verwijder_vorige_sleutels booleaan Of u oude SSH-sleutels al dan niet wilt verwijderen wanneer u een nieuwe sleutel toevoegt. Moet worden gebruikt met ssh_key.
restore_backup_ssh booleaan Of u wel of niet de oorspronkelijke back-up van sshd_config wilt herstellen.

Sjabloonimplementatie

Azure VM-extensies kunnen worden geïmplementeerd met ARM-sjablonen (Azure Resource Manager). Het JSON-schema dat in de vorige sectie wordt beschreven, kan worden gebruikt in een ARM-sjabloon om de VMAccess-extensie uit te voeren tijdens de implementatie van de sjabloon. U vindt een voorbeeldsjabloon met de VMAccess-extensie op GitHub.

De JSON-configuratie voor een extensie van een virtuele machine moet zijn genest binnen het resourcefragment van de virtuele machine in de sjabloon, met name in het "resources": []-object voor de virtuele-machinesjabloon en voor een schaalset van virtuele machines onder het "virtualMachineProfile":"extensionProfile":{"extensions" :[]-object.

Implementatie van Azure CLI

Azure CLI VM-gebruikersopdrachten gebruiken

De volgende CLI-opdrachten onder az vm user gebruiken de VMAccess-extensie. Als u deze opdrachten wilt gebruiken, moet u de nieuwste Azure CLI installeren en u aanmelden bij een Azure-account met behulp van az sign-in.

SSH-sleutel bijwerken

In het volgende voorbeeld wordt de SSH-sleutel bijgewerkt voor de gebruiker azureUser op de vm met de naam myVM:

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

Opmerking

Met az vm user update de opdracht wordt de nieuwe openbare sleuteltekst toegevoegd aan het ~/.ssh/authorized_keys bestand voor de gebruiker met beheerdersrechten op de virtuele machine. Met deze opdracht worden bestaande SSH-sleutels niet vervangen of verwijderd. Met deze opdracht worden eerdere sleutels die zijn ingesteld tijdens de implementatie of latere updates niet verwijderd met behulp van de VMAccess-extensie.

Wachtwoord opnieuw instellen

In het volgende voorbeeld wordt het wachtwoord voor de gebruiker azureUser op de vm met de naam myVMopnieuw ingesteld:

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

SSH opnieuw starten

In het volgende voorbeeld wordt de SSH-daemon opnieuw opgestart en wordt de SSH-configuratie opnieuw ingesteld op standaardwaarden op een virtuele machine met de naam myVM:

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

Opmerking

De az vm user reset-ssh opdracht vervangt het sshd_config bestand door een standaardconfiguratiebestand uit de map interne resources. Met deze opdracht wordt de oorspronkelijke SSH-configuratie op de virtuele machine niet hersteld.

Een gebruiker met beheerdersrechten/sudo maken

In het volgende voorbeeld wordt een gebruiker genaamd myNewUser gemaakt met sudo-rechten. Het account gebruikt een SSH-sleutel voor verificatie op de vm met de naam myVM. Met deze methode kunt u weer toegang krijgen tot een virtuele machine wanneer de huidige referenties verloren of vergeten zijn. Als best practice moeten accounts met sudo-machtigingen worden beperkt.

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

Een gebruiker verwijderen

In het volgende voorbeeld wordt een gebruiker met de naam myNewUser verwijderd op de vm met de naam myVM:

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

Azure CLI VM/Virtual Machine Scale Sets-extensieopdrachten gebruiken

U kunt ook de opdrachten az vm extension set en az vmss extension set gebruiken om de VMAccess-extensie uit te voeren met de opgegeven configuratie.

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

De --settings en --protected-settings parameters accepteren ook JSON-bestandspaden. Als u bijvoorbeeld de openbare SSH-sleutel van een gebruiker wilt bijwerken, maakt u een JSON-bestand met de naam update_ssh_key.json en voegt u instellingen toe in de volgende indeling. Vervang de waarden in het bestand door uw eigen gegevens:

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

Voer de VMAccess-extensie uit via de volgende opdracht:

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

Azure PowerShell kan worden gebruikt om de VMAccess-extensie te implementeren op een bestaande virtuele machine of virtuele-machineschaalset. U kunt de extensie implementeren op een virtuele machine door het volgende uit te voeren:

$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

U kunt ook extensie-instellingen opgeven en wijzigen met behulp van tekenreeksen:

$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

Voer de volgende opdracht uit om te implementeren in een virtuele-machineschaalset:

$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

Problemen oplossen en ondersteuning bieden

De VMAccess-extensielogboeken bestaan lokaal op de virtuele machine en zijn het meest informatief als het gaat om het oplossen van problemen.

Locatie Beschrijving
/var/log/waagent.log Bevat logboeken van de Linux-agent en wordt weergegeven wanneer er een update naar de extensie is opgetreden. We kunnen nakijken of de extensie is uitgevoerd.
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* De VMAccess-extensie produceert logboeken, die hier te vinden zijn. De map bevat CommandExecution.log waarin u elke uitgevoerde opdracht met bijbehorend resultaat kunt vinden, evenals extension.log, dat afzonderlijke logs voor elke uitvoering bevat.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-<meest recente versie>/config/* De configuratie en binaire bestanden voor de VMAccess-VM-extensie.

U kunt ook de uitvoeringsstatus van de VMAccess-extensie, samen met andere extensies op een bepaalde VM, ophalen door de volgende opdracht uit te voeren:

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

Foutberichten

Fout Beschrijving
Er is een time-out opgetreden bij het inrichten van de VM-extensie enablevmaccess. Het inrichten van extensies heeft te lang geduurd. Er is geen bericht door de extensie verzonden. Meer informatie over probleemoplossing vindt u op https://aka.ms/vmextensionlinuxtroubleshoot. Het foutbericht geeft aan dat er een time-out is opgetreden bij het inrichten van de VM-extensie enablevmaccess, omdat het te lang duurt om te voltooien. Daarnaast heeft de extensie tijdens het proces geen statusbericht opgegeven. U kunt dit probleem oplossen door de prestaties en netwerkvoorwaarden van de VIRTUELE machine te controleren en de inrichtingsbewerking opnieuw uit te voeren. Zie Problemen met VM-extensies oplossen voor meer informatie.
VM heeft een fout gerapporteerd bij het verwerken van de extensie enablevmaccess (uitgever 'Microsoft.OSTCExtensions' en typ 'VMAccessForLinux'). Foutbericht: 'Inschakelen is mislukt: er is geen wachtwoord of ssh_key opgegeven.' Meer informatie over probleemoplossing vindt u op https://aka.ms/vmextensionlinuxtroubleshoot . Het foutbericht geeft aan dat de VM de extensie enablevmaccess niet kan verwerken omdat er geen wachtwoord of SSH-sleutel is opgegeven. Deze fout is gekoppeld aan de uitgever Microsoft.OSTCExtensions en het type VMAccessForLinux. U kunt dit probleem oplossen door ervoor te zorgen dat er een wachtwoord of een SSH-sleutel wordt opgegeven tijdens de extensieconfiguratie.

Voor meer hulp kunt u contact opnemen met de Azure-experts bij de ondersteuning van de Azure-community. U kunt ook een Azure-ondersteuningsincident indienen. Ga naar ondersteuning voor Azure en selecteer Ondersteuning krijgen. Lees de veelgestelde vragen over Azure-ondersteuningsplannen voor meer informatie over Azure-ondersteuning.

Volgende stappen

Zie VMAccess Linux - GitHub voor meer informatie over de code, huidige versies en meer documentatie.