Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 verandertChallengeResponseAuthenticationinnoenPasswordAuthenticationinyes. Als u de oorspronkelijke SSH-configuratie van een back-up wilt herstellen, voert u VMAccess uit metrestore_backup_sshingesteld opTrue.
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.