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.
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+ |
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 metrestore_backup_ssh
ingesteld 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
}
}
}
Eigenschapswaarden
Naam | Waarde/voorbeeld | Gegevenstype |
---|---|---|
apiVersion | 2023-09-01 | datum |
uitgever | Microsoft.OSTCExtensions | tekenreeks |
type | VMAccessForLinux | tekenreeks |
typeHandlerVersion | 1.5 | int |
Eigenschapswaarden van 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-rsa indeling of ssh-ed25519 .pem indeling hebben. |
reset_ssh | boolean | Of u de SSH al dan niet opnieuw wilt instellen. Als true dit 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_ssh en 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 myVM
opnieuw 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.log het 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.