Rozszerzenie VMAccess dla systemu Linux
Rozszerzenie VMAccess służy do zarządzania użytkownikami administracyjnymi, konfigurowania protokołu SSH i sprawdzania lub naprawiania dysków na maszynach wirtualnych z systemem Linux platformy Azure. Rozszerzenie integruje się z szablonami usługi Azure Resource Manager. Można go również wywołać przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell, witryny Azure Portal i interfejsu API REST usługi Azure Virtual Machines.
W tym artykule opisano sposób uruchamiania rozszerzenia VMAccess z poziomu interfejsu wiersza polecenia platformy Azure i szablonu usługi Azure Resource Manager. Ten artykuł zawiera również kroki rozwiązywania problemów z systemami Linux.
Uwaga
Jeśli używasz rozszerzenia VMAccess, aby zresetować hasło maszyny wirtualnej po zainstalowaniu rozszerzenia Microsoft Entra Login, uruchom ponownie rozszerzenie Microsoft Entra Login, aby ponownie włączyć logowanie firmy Microsoft dla maszyny wirtualnej.
Wymagania wstępne
Obsługiwane dystrybucje systemu Linux
Dystrybucja systemu Linux | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | Ponad 10 | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Nieobsługiwany |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Nieobsługiwany |
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+ |
Wskazówki
- Funkcja VMAccess została zaprojektowana pod kątem odzyskania dostępu do maszyny wirtualnej, biorąc pod uwagę utratę dostępu. Na podstawie tej zasady udziela uprawnień sudo do konta określonego w polu nazwy użytkownika. Jeśli nie chcesz, aby użytkownik uzyskał uprawnienia sudo, zaloguj się do maszyny wirtualnej i użyj wbudowanych narzędzi (na przykład usermod, chage itp.), aby zarządzać użytkownikami nieuprzywilejowanym.
- Do maszyny wirtualnej można zastosować tylko jedną wersję rozszerzenia. Aby uruchomić drugą akcję, zaktualizuj istniejące rozszerzenie przy użyciu nowej konfiguracji.
- Podczas aktualizacji użytkownika funkcja VMAccess zmienia
sshd_config
plik i wykonuje jego kopię zapasową wcześniej. Aby przywrócić oryginalną konfigurację SSH kopii zapasowej, uruchom funkcję VMAccess z ustawioną wartościąrestore_backup_ssh
True
.
Schemat rozszerzenia
Konfiguracja rozszerzenia VMAccess obejmuje ustawienia nazwy użytkownika, haseł, kluczy SSH itp. Te informacje można przechowywać w plikach konfiguracji, określać je w wierszu polecenia lub dołączać je do szablonu usługi Azure Resource Manager (ARM). Poniższy schemat JSON zawiera wszystkie właściwości dostępne do użycia w ustawieniach publicznych i chronionych.
{
"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
}
}
}
Wartości właściwości
Nazwisko | Wartość / przykład | Typ danych |
---|---|---|
apiVersion | 2023-09-01 | data |
wydawca | Microsoft.OSTCExtensions | string |
type | VMAccessForLinux | string |
typeHandlerVersion | 1.5 | int |
Ustawienia wartości właściwości
Nazwisko | Typ danych | opis |
---|---|---|
check_disk | boolean | Czy sprawdzić dysk (opcjonalnie). Wartość true można ustawić tylko jeden między elementami check_disk i repair_disk . |
repair_disk | boolean | Czy sprawdzić dysk (opcjonalnie). Wartość true można ustawić tylko jeden między elementami check_disk i repair_disk . |
disk_name | string | Nazwa dysku do naprawy (wymagana, gdy repair_disk ma wartość true). |
nazwa użytkownika | string | Nazwa użytkownika do zarządzania (wymagana dla wszystkich akcji na koncie użytkownika). |
hasło | string | Hasło do ustawienia dla konta użytkownika. |
ssh_key | string | Klucz publiczny SSH do dodania dla konta użytkownika. Klucz SSH może mieć format ssh-rsa , ssh-ed25519 lub .pem . |
reset_ssh | boolean | Czy zresetować protokół SSH. Jeśli true parametr zastępuje plik sshd_config wewnętrznym plikiem zasobów odpowiadającym domyślnej konfiguracji protokołu SSH dla tej dystrybucji. |
remove_user | string | Nazwa użytkownika do usunięcia. Nie można używać z parametrami reset_ssh , restore_backup_ssh i password . |
wygaśnięcie | string | Wygaśnięcie wartości na wartość dla konta w postaci yyyy-mm-dd . Wartości domyślne nigdy. |
remove_prior_keys | boolean | Czy usunąć stare klucze SSH podczas dodawania nowego. Musi być używany z ssh_key . |
restore_backup_ssh | boolean | Czy przywrócić oryginalną kopię zapasową sshd_config. |
Wdrażanie na podstawie szablonu
Rozszerzenia maszyn wirtualnych platformy Azure można wdrażać za pomocą szablonów usługi Azure Resource Manager (ARM). Schemat JSON opisany w poprzedniej sekcji może służyć w szablonie usługi ARM do uruchamiania rozszerzenia VMAccess podczas wdrażania szablonu. Przykładowy szablon zawierający rozszerzenie VMAccess można znaleźć w witrynie GitHub.
Konfiguracja JSON rozszerzenia maszyny wirtualnej musi być zagnieżdżona wewnątrz fragmentu zasobu maszyny wirtualnej szablonu, w szczególności "resources": []
obiektu dla szablonu maszyny wirtualnej i zestawu skalowania maszyn wirtualnych w obszarze "virtualMachineProfile":"extensionProfile":{"extensions" :[]
obiektu.
Wdrożenie za pomocą interfejsu wiersza polecenia platformy Azure
Korzystanie z poleceń użytkownika maszyny wirtualnej interfejsu wiersza polecenia platformy Azure
Następujące polecenia interfejsu wiersza polecenia w obszarze az vm user używają rozszerzenia VMAccess. Aby użyć tych poleceń, musisz zainstalować najnowszy interfejs wiersza polecenia platformy Azure i zalogować się do konta platformy Azure przy użyciu polecenia az login.
Aktualizowanie klucza SSH
Poniższy przykład aktualizuje klucz SSH użytkownika azureUser
na maszynie wirtualnej o nazwie myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Uwaga
Polecenie az vm user update
dołącza nowy tekst klucza publicznego do ~/.ssh/authorized_keys
pliku dla użytkownika administracyjnego na maszynie wirtualnej. To polecenie nie zastępuje ani nie usuwa żadnych istniejących kluczy SSH. To polecenie nie usuwa poprzednich kluczy ustawionych w czasie wdrażania ani kolejnych aktualizacji przy użyciu rozszerzenia VMAccess.
Resetowanie hasła
Poniższy przykład resetuje hasło użytkownika azureUser
na maszynie wirtualnej o nazwie myVM
:
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username azureUser \
--password myNewPassword
Ponowne uruchamianie protokołu SSH
Poniższy przykład powoduje ponowne uruchomienie demona SSH i zresetowanie konfiguracji SSH do wartości domyślnych na maszynie wirtualnej o nazwie myVM
:
az vm user reset-ssh \
--resource-group myResourceGroup \
--name myVM
Uwaga
Polecenie az vm user reset-ssh
zastępuje plik sshd_config domyślnym plikiem konfiguracji z katalogu zasobów wewnętrznych. To polecenie nie przywraca oryginalnej konfiguracji SSH znalezionej na maszynie wirtualnej.
Tworzenie użytkownika administracyjnego/sudo
Poniższy przykład tworzy użytkownika o nazwie myNewUser
z uprawnieniami sudo. Konto używa klucza SSH do uwierzytelniania na maszynie wirtualnej o nazwie myVM
. Ta metoda pomaga odzyskać dostęp do maszyny wirtualnej, gdy bieżące poświadczenia zostaną utracone lub zapomniane. Najlepszym rozwiązaniem jest ograniczenie kont z uprawnieniami sudo.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--ssh-key-value ~/.ssh/id_rsa.pub
Usuwanie użytkownika
Poniższy przykład usuwa użytkownika o nazwie myNewUser
na maszynie wirtualnej o nazwie myVM
:
az vm user delete \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser
Używanie poleceń rozszerzenia vm/VMSS interfejsu wiersza polecenia platformy Azure
Możesz również użyć poleceń az vm extension set i az vmss extension set , aby uruchomić rozszerzenie VMAccess z określoną konfiguracją.
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"}'
Parametry --settings
i --protected-settings
akceptują również ścieżki plików JSON. Aby na przykład zaktualizować klucz publiczny SSH użytkownika, utwórz plik JSON o nazwie update_ssh_key.json
i dodaj ustawienia w następującym formacie. Zastąp wartości w pliku własnymi informacjami:
{
"username":"azureuser",
"ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}
Uruchom rozszerzenie VMAccess za pomocą następującego polecenia:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name VMAccessForLinux \
--publisher Microsoft.OSTCExtensions \
--version 1.5 \
--protected-settings update_ssh_key.json
Wdrażanie programu Azure PowerShell
Za pomocą programu Azure PowerShell można wdrożyć rozszerzenie VMAccess do istniejącej maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych. Rozszerzenie można wdrożyć na maszynie wirtualnej, uruchamiając polecenie:
$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
Możesz również podać i zmodyfikować ustawienia rozszerzenia przy użyciu ciągów:
$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
Aby wdrożyć w zestawie skalowania maszyn wirtualnych, uruchom następujące polecenie:
$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
Rozwiązywanie problemów i pomoc techniczna
Dzienniki rozszerzenia VMAccess istnieją lokalnie na maszynie wirtualnej i są najbardziej informacyjne, jeśli chodzi o rozwiązywanie problemów.
Lokalizacja | opis |
---|---|
/var/log/waagent.log | Zawiera dzienniki z agenta systemu Linux i pokazuje, kiedy wystąpiła aktualizacja rozszerzenia. Możemy to sprawdzić, aby upewnić się, że rozszerzenie jest uruchomione. |
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* | Rozszerzenie VMAccess generuje dzienniki, które można znaleźć tutaj. Katalog zawiera CommandExecution.log miejsce, w którym można znaleźć każde polecenie wykonane wraz z jego wynikiem, wraz z elementem extension.log , który zawiera poszczególne dzienniki dla każdego wykonania. |
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-najnowsza< wersja>/config/* | Konfiguracja i pliki binarne rozszerzenia maszyny wirtualnej VMAccess. |
Można również pobrać stan wykonywania rozszerzenia VMAccess wraz z innymi rozszerzeniami na danej maszynie wirtualnej, uruchamiając następujące polecenie:
az vm extension list --resource-group myResourceGroup --vm-name myVM -o table
Aby uzyskać więcej pomocy, możesz skontaktować się z ekspertami platformy Azure w pomocy technicznej społeczności platformy Azure. Alternatywnie możesz zgłosić zdarzenie pomoc techniczna platformy Azure. Przejdź do pomoc techniczna platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną. Aby uzyskać więcej informacji na temat pomocy technicznej platformy Azure, zapoznaj się z często zadawanymi pytaniami dotyczącymi planów pomoc techniczna platformy Azure.
Następne kroki
Aby wyświetlić kod, bieżące wersje i więcej dokumentacji, zobacz VMAccess Linux — GitHub.