VMAccess-extensie voor Linux

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

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.

Notitie

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.

Vereisten

Ondersteunde Linux-distributies

Linux-distributie x64 ARM64
Alma Linux 9.x+ 9.x+
CentOS 7.x+, 8.x+ 7.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Niet ondersteund
Oracle Linux 6.4+, 7.x+, 8.x+ Niet ondersteund
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 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, chage, 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 het bijwerken van een gebruiker wordt het sshd_config bestand door VMAccess gewijzigd en wordt er vooraf een back-up van gemaakt. 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
    } 
  }
}

Eigenschapswaarden

Naam Waarde/voorbeeld Gegevenstype
apiVersion 2023-09-01 datum
Publisher Microsoft.OSTCExtensions tekenreeks
type VMAccessForLinux tekenreeks
typeHandlerVersion 1.5 int

eigenschapswaarden Instellingen

Naam Gegevenssoort Beschrijving
check_disk boolean Of u de schijf al dan niet wilt controleren (optioneel). Slechts één tussen check_disk en repair_disk kan worden ingesteld op waar.
repair_disk boolean Of u de schijf al dan niet wilt controleren (optioneel). Slechts één tussen check_disk en repair_disk kan worden ingesteld op waar.
disk_name tekenreeks De naam van de schijf die moet worden hersteld (vereist wanneer repair_disk waar).
gebruikersnaam tekenreeks De naam van de gebruiker die moet worden beheerd (vereist voor alle acties op een gebruikersaccount).
password tekenreeks Het wachtwoord dat moet worden ingesteld voor het gebruikersaccount.
ssh_key tekenreeks De openbare SSH-sleutel die moet worden toegevoegd voor het gebruikersaccount. De SSH-sleutel kan een ssh-rsaindeling of ssh-ed25519.pem indeling hebben.
reset_ssh boolean 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.
remove_user tekenreeks De naam van de gebruiker die u wilt verwijderen. Kan niet worden gebruikt met reset_ssh, restore_backup_sshen password.
verlooptijd tekenreeks Vervaldatum die moet worden ingesteld voor het account, in de vorm van yyyy-mm-dd. De standaardinstelling is dat nooit.
remove_prior_keys boolean 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 boolean Of u de oorspronkelijke back-up wilt herstellen sshd_config.

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 virtuele-machineextensie moet zijn genest in het resourcefragment van de virtuele machine van de sjabloon, met name "resources": [] het object voor de virtuele-machinesjabloon en voor een virtuele-machineschaalset onder "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 login.

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

Notitie

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

Notitie

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-gebruiker maken

In het volgende voorbeeld wordt een gebruiker met de naam myNewUser sudo-machtigingen gemaakt. 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

Opdrachten voor Azure CLI-VM/VMSS-extensie 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 met en ondersteuning oplossen

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 controleren 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 waar u elke opdracht kunt vinden die samen met het resultaat wordt uitgevoerd, samen met extension.loghet resultaat, dat afzonderlijke logboeken 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

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

Volgende stappen

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