Zapomenuté heslo v Azure VM

Nejspíš to taky znáte – člověk jednou nastaví přihlašovací údaje k virtuální mašině, zapomene aktivovat ochranu proti zapomenutí (tedy někam si je zapsat), všechno nastaví, nasadí a přestane se k VM připojovat. Uplyne pár týdnů, je potřeba se do virtuálního stroje zase podívat a hle, heslo nikde. Dřív to znamenalo VM smazat a nasadit znovu, od uvedení VM agentů to naštěstí již není taková tragédie – jeden řádek zřetězených příkazů PowerShellu a je po problému:

Get-AzureVM –ServiceName <název Cloud Service> –Name <název VM> | Set-AzureVMAccessExtension –UserName <uživatelské jméno> –Password <heslo> | Update-AzureVM

Tímto způsobem lze nejen nastavit administrátorské heslo, ale také změnit přihlašovací jméno (čili není třeba, aby bylo stejné jako to původní).

Samozřejmě to není jen tak a aby příkaz fungoval, musí být splněno několik předpokladů:

1. Je potřeba mít nainstalovaný Azure PowerShell.

Pokud jste s Azure PowerShell ještě nepřišli do kontaktu, vězte, že se jedná o modul, který do PowerShellu přidává příkazy pro správu Microsoft Azure. Nejenže je volně ke stažení, ale jeho zdrojový kód je navíc otevřený a k dispozici na GitHubu. Instrukce k instalaci a přidání subscription naleznete v dokumentaci.

2. Je potřeba, aby váš Azure PowerShell byl alespoň verze 0.7.4. Dá se to ověřit například pomocí příkazu Get-Module Azure.

image

3. Je potřeba mít ve virtuální mašině aktivovaný VM Agent. Tato možnost se vybírá při tvorbě virtuálního počítače a je ve výchozím stavu zaškrtnutá (při Quick Create se ani nedá vypnout). VM Agent není možné do VM doplnit zpětně, takže tento předpoklad je zároveň časovým omezením – resetovat heslo přes PowerShell lze jen u virtuálních mašin, které vznikly až po uvedení této funkce (tedy v únoru).

image

Pro kontrolu, zda je VM Agent ve virtuálním stroji aktivní, lze použít tento příkaz: (Get-AzureVM –ServiceName <název Cloud Service> –Name <název VM>).VM.ProvisionGuestAgent

4. Je potřeba, aby heslo splňovalo stejné požadavky na délku, komplexitu a historii jako při vytváření přes portál. PowerShell sice zahlásí, že příkaz proběhl úspěšně, nicméně ke změně nedojde (chybu je možné dohledat v logu).


Agent ukládá záznamy o svojí činnosti do souboru C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.VMAccessAgent\1.0.3\VMAccessAgent.log ve virtuálním stroji, takže pokud se úkon nepodaří, zde naleznete, v čem je problém. Pokud se tedy do filesystému dostanete :)

Martin