Rozšíření VMAccess pro Linux
Rozšíření VMAccess slouží ke správě správců, konfiguraci SSH a kontrole nebo opravě disků na virtuálních počítačích Azure s Linuxem. Rozšíření se integruje se šablonami Azure Resource Manageru. Můžete ho také vyvolat pomocí Azure CLI, Azure PowerShellu, webu Azure Portal a rozhraní REST API služby Azure Virtual Machines.
Tento článek popisuje, jak spustit rozšíření VMAccess z Azure CLI a prostřednictvím šablony Azure Resource Manageru. Tento článek obsahuje také postup řešení potíží pro systémy Linux.
Poznámka:
Pokud použijete rozšíření VMAccess k resetování hesla virtuálního počítače po instalaci rozšíření Microsoft Entra Login, znovu spusťte rozšíření Microsoft Entra Login a znovu povolte microsoft Entra Login pro váš virtuální počítač.
Požadavky
Podporované linuxové distribuce
Distribuce Linuxu | 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+ | Nepodporuje se |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Nepodporuje se |
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+ |
Tipy
- Technologie VMAccess byla navržena tak, aby znovu získala přístup k virtuálnímu počítači vzhledem ke ztrátě přístupu. Na základě tohoto principu uděluje oprávnění sudo k účtu zadanému v poli uživatelského jména. Pokud nechcete, aby uživatel získal oprávnění sudo, přihlaste se k virtuálnímu počítači a použijte integrované nástroje (například usermod, chage atd.) ke správě neprivilegovaných uživatelů.
- Na virtuální počítač můžete použít jenom jednu verzi rozšíření. Pokud chcete spustit druhou akci, aktualizujte stávající rozšíření novou konfigurací.
- Během aktualizace uživatele změní VMAccess soubor a předem ho zálohuje
sshd_config
. Pokud chcete obnovit původní zálohovanou konfiguraci SSH, spusťte VMAccess s nastavenýmrestore_backup_ssh
nastavením .True
Schéma rozšíření
Konfigurace rozšíření VMAccess zahrnuje nastavení pro uživatelské jméno, hesla, klíče SSH atd. Tyto informace můžete uložit do konfiguračních souborů, zadat je na příkazovém řádku nebo je zahrnout do šablony Azure Resource Manageru (ARM). Následující schéma JSON obsahuje všechny vlastnosti, které se dají použít ve veřejných a chráněných nastaveních.
{
"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
}
}
}
Hodnoty vlastností
Název | Hodnota / příklad | Datový typ |
---|---|---|
apiVersion | 2023-09-01 | datum |
vydavatel | Microsoft.OSTCExtensions | string |
type | VMAccessForLinux | string |
typeHandlerVersion | 1.5 | int |
Hodnoty vlastností nastavení
Name | Datový typ | Popis |
---|---|---|
check_disk | boolean | Bez ohledu na to, jestli chcete zkontrolovat disk (volitelné). Pouze jeden mezi check_disk a repair_disk může být nastaven na true. |
repair_disk | boolean | Bez ohledu na to, jestli chcete zkontrolovat disk (volitelné). Pouze jeden mezi check_disk a repair_disk může být nastaven na true. |
disk_name | string | Název disku, který se má opravit (vyžaduje se, pokud repair_disk je true). |
username | string | Jméno uživatele, který se má spravovat (vyžaduje se pro všechny akce uživatelského účtu). |
Heslo | string | Heslo, které se má nastavit pro uživatelský účet. |
ssh_key | string | Veřejný klíč SSH, který chcete přidat pro uživatelský účet. Klíč SSH může být ve ssh-rsa formátu , ssh-ed25519 nebo .pem ve formátu. |
reset_ssh | boolean | Jestli chcete resetovat SSH, nebo ne. Pokud true nahradí soubor sshd_config interním souborem prostředků, který odpovídá výchozí konfiguraci SSH pro danou distribuci. |
remove_user | string | Jméno uživatele, který chcete odebrat. Nelze použít s reset_ssh , restore_backup_ssh a password . |
vypršení platnosti | string | Vypršení platnosti nastavené na účet ve formě yyyy-mm-dd . Výchozí hodnota je nikdy. |
remove_prior_keys | boolean | Bez ohledu na to, jestli chcete odebrat staré klíče SSH při přidávání nového klíče. Musí být použit s ssh_key . |
restore_backup_ssh | boolean | Bez ohledu na to, jestli chcete obnovit původní zálohované sshd_config. |
Nasazení šablon
Rozšíření virtuálních počítačů Azure je možné nasadit pomocí šablon Azure Resource Manageru (ARM). Schéma JSON podrobně popsané v předchozí části můžete použít v šabloně ARM ke spuštění rozšíření VMAccess během nasazení šablony. Ukázkovou šablonu, která obsahuje rozšíření VMAccess, najdete na GitHubu.
Konfigurace JSON pro rozšíření virtuálního počítače musí být vnořená uvnitř fragmentu prostředku virtuálního počítače šablony "resources": []
, konkrétně objektu pro šablonu virtuálního počítače a pro škálovací sadu virtuálních počítačů pod objektem "virtualMachineProfile":"extensionProfile":{"extensions" :[]
.
Nasazení v Azure CLI
Použití uživatelských příkazů virtuálního počítače Azure CLI
Následující příkazy rozhraní příkazového řádku v části az vm user používají rozšíření VMAccess. Pokud chcete tyto příkazy použít, musíte nainstalovat nejnovější Azure CLI a přihlásit se k účtu Azure pomocí příkazu az login.
Aktualizace klíče SSH
Následující příklad aktualizuje klíč SSH pro uživatele azureUser
na virtuálním počítači s názvem myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Poznámka:
Příkaz az vm user update
připojí k souboru nový text ~/.ssh/authorized_keys
veřejného klíče pro uživatele správce na virtuálním počítači. Tento příkaz nenahrazuje ani neodebere žádné existující klíče SSH. Tento příkaz neodebere předchozí klíče nastavené v době nasazení ani následné aktualizace pomocí rozšíření VMAccess.
Resetování hesla
Následující příklad resetuje heslo uživatele azureUser
na virtuálním počítači s názvem myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
Restartování SSH
Následující příklad restartuje démon SSH a resetuje konfiguraci SSH na výchozí hodnoty na virtuálním počítači s názvem myVM
:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Poznámka:
Příkaz az vm user reset-ssh
nahradí soubor sshd_config výchozím konfiguračním souborem z interního adresáře prostředků. Tento příkaz neobnoví původní konfiguraci SSH nalezenou na virtuálním počítači.
Vytvoření uživatele s oprávněním správce nebo sudo
Následující příklad vytvoří uživatele s myNewUser
oprávněními sudo. Účet používá klíč SSH k ověřování na virtuálním počítači s názvem myVM
. Tato metoda vám pomůže znovu získat přístup k virtuálnímu počítači, když dojde ke ztrátě nebo zapomenutí aktuálních přihlašovacích údajů. Osvědčeným postupem je omezit účty s oprávněními sudo.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Odstranění uživatele
Následující příklad odstraní uživatele pojmenovaného myNewUser
na virtuálním počítači s názvem myVM
:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Použití příkazů rozšíření Azure CLI pro virtuální počítač nebo VMSS
K spuštění rozšíření VMAccess s zadanou konfigurací můžete použít také příkazy az vmss extension set a az vmss extension set .
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"}'
Tyto --settings
parametry --protected-settings
také přijímají cesty k souborům JSON. Pokud například chcete aktualizovat veřejný klíč SSH uživatele, vytvořte soubor JSON s názvem update_ssh_key.json
a přidejte nastavení v následujícím formátu. Nahraďte hodnoty v souboru vlastními informacemi:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
Rozšíření VMAccess spusťte pomocí následujícího příkazu:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--protected-settings update_ssh_key.json
Nasazení Azure PowerShellu
Azure PowerShell se dá použít k nasazení rozšíření VMAccess do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů. Rozšíření můžete nasadit na virtuální počítač spuštěním následujícího příkazu:
$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
Nastavení rozšíření můžete také zadat a upravit pomocí řetězců:
$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
Pokud chcete nasadit do škálovací sady virtuálních počítačů, spusťte následující příkaz:
$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
Řešení potíží a podpora
Protokoly rozšíření VMAccess existují místně na virtuálním počítači a jsou nejinformativnější, pokud jde o řešení potíží.
Umístění | Popis |
---|---|
/var/log/waagent.log | Obsahuje protokoly z agenta pro Linux a ukazuje, kdy došlo k aktualizaci rozšíření. Můžeme ho zkontrolovat, abychom zajistili, že se rozšíření spustilo. |
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | Rozšíření VMAccess vytváří protokoly, které najdete tady. Adresář obsahuje CommandExecution.log místo, kde můžete najít každý příkaz spuštěný spolu s jeho výsledkem, spolu s extension.log , který obsahuje jednotlivé protokoly pro každé spuštění. |
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-nejnovější< verze>/config/* | Konfigurace a binární soubory pro rozšíření virtuálního počítače VMAccess se liší. |
Spuštěním následujícího příkazu můžete také načíst stav spuštění rozšíření VMAccess spolu s dalšími rozšířeními na daném virtuálním počítači:
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Pokud potřebujete další pomoc, můžete kontaktovat odborníky na Azure na podpoře komunity Azure. Případně můžete podat incident podpora Azure. Přejděte na podpora Azure a vyberte Získat podporu. Další informace o podpoře Azure najdete v nejčastějších dotazech k plánům podpora Azure.
Další kroky
Informace o kódu, aktuálních verzích a další dokumentaci najdete v tématu VMAccess Linux – GitHub.