Sdílet prostřednictvím


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ým restore_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-rsaformátu , ssh-ed25519nebo .pem ve formátu.
reset_ssh boolean Jestli chcete resetovat SSH, nebo ne. Pokud truenahradí 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_ssha 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.