Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 / Notatka
Jeśli używasz rozszerzenia VMAccess do resetowania hasła maszyny wirtualnej po zainstalowaniu rozszerzenia logowania firmy Microsoft Entra, uruchom ponownie rozszerzenie logowania microsoft Entra, aby ponownie włączyć logowanie microsoft Entra dla maszyny wirtualnej.
Uwaga / Notatka
Wypróbuj pomoc maszyny wirtualnej, aby uzyskać szybszą diagnostykę. Zalecamy uruchomienie asysty maszyny wirtualnej dla systemu Windows lub asystenta maszyny wirtualnej dla systemu Linux. Te narzędzia diagnostyczne oparte na skryptach ułatwiają identyfikowanie typowych problemów, które mają wpływ na agenta gościa maszyny wirtualnej platformy Azure i ogólną kondycję maszyny wirtualnej.
Jeśli występują problemy z wydajnością maszyn wirtualnych, przed skontaktowaniem się z pomocą techniczną uruchom te narzędzia.
Wymagania wstępne
Obsługiwane dystrybucje systemu Linux
| Publisher | Dystrybucja | x64 | ARM64 |
|---|---|---|---|
| Społeczność Alma Linux | Alma Linux | 8.x+, 9.x+ | 8.x+, 9.x+ |
| Credativ | Debian | Ponad 10 | 11.x+ |
| Kinvolk | Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
| Microsoft | Azure Linux | 2.x | 2.x |
| openSUSE Project | openSUSE | 12.3+ | nieobsługiwane. |
| Oracle | Oracle Linux | 6.4+, 7.x+, 8.x+ | nieobsługiwane. |
| Red Hat | Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ | 8.6+, 9.0+, 10.x+ |
| CIQ | Rocky Linux | 9.x+ | 9.x+ |
| SUSE | SLES | 12.x+, 15.x+ | 15.x SP4+ |
| Canonical | Ubuntu (wersje LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.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 dla konta użytkownika 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, change 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_configplik i wykonuje jego kopię zapasową wcześniej.ChallengeResponseAuthenticationZmienia się nanoiPasswordAuthenticationnayes. Aby przywrócić oryginalną zapisaną konfigurację SSH, uruchom VMAccess, ustawiającrestore_backup_sshnaTrue.
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
| Nazwa | Wartość / przykład | Typ danych |
|---|---|---|
| apiVersion | 2023-09-01 | termin |
| wydawca | Microsoft.OSTCExtensions | ciąg |
| typ | VMAccessForLinux | ciąg |
| wersjaTypeHandlera | 1.5 | int (integer) |
Ustawienia wartości właściwości
| Nazwa | Typ danych | Opis |
|---|---|---|
| sprawdź_dysk | typ logiczny (boolowski) | Czy sprawdzić dysk (opcjonalnie). Tylko jeden z elementów check_disk i repair_disk może mieć wartość true. |
| naprawa_dysku | typ logiczny (boolowski) | Czy sprawdzić dysk (opcjonalnie). Tylko jeden z elementów check_disk i repair_disk może mieć wartość true. |
| nazwa_dysku | ciąg | Nazwa dysku do naprawy (wymagana, gdy repair_disk ma wartość true). |
| nazwa użytkownika | ciąg | Nazwa użytkownika do zarządzania (wymagana dla wszystkich akcji na koncie użytkownika). |
| hasło | ciąg | Hasło do ustawienia dla konta użytkownika. |
| ssh_key | ciąg | Klucz publiczny SSH do dodania dla konta użytkownika. Klucz SSH może mieć format ssh-rsa, ssh-ed25519lub .pem . |
| reset_ssh | typ logiczny (boolowski) | Czy zresetować protokół SSH. Jeśli true jest spełniony, plik sshd_config zostanie zastąpiony wewnętrznym plikiem zasobów odpowiadającym domyślnej konfiguracji SSH dla tej dystrybucji. |
| usuń_użytkownika | ciąg | Nazwa użytkownika do usunięcia. Nie można używać z parametrami reset_ssh, restore_backup_sshi password. |
| wygaśnięcie | ciąg | Data wygaśnięcia do ustawienia dla konta w formie yyyy-mm-dd. Domyślne ustawienie to nigdy. |
| usuń_poprzednie_klucze | typ logiczny (boolowski) | Czy usunąć stare klucze SSH podczas dodawania nowego. Powinno być stosowane z ssh_key. |
| przywróć_kopię_zapasową_ssh | typ logiczny (boolowski) | Czy przywrócić oryginalną kopię zapasową sshd_config. |
Template deployment
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 w obiekcie "resources": [] dla szablonu maszyny wirtualnej oraz w obiekcie "virtualMachineProfile":"extensionProfile":{"extensions" :[] dla zestawu skalowania maszyn wirtualnych.
Wdrożenie za pomocą CLI platformy Azure
Korzystanie z poleceń użytkownika Azure CLI dla maszyny wirtualnej
Następujące polecenia CLI 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 sign-in.
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 / Notatka
Polecenieaz vm user update dodaje tekst nowego klucza publicznego do pliku ~/.ssh/authorized_keys dla użytkownika admina 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 / Notatka
Polecenieaz 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 maszyny wirtualnej/zestawu skalowania maszyn wirtualnych 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, gdzie można znaleźć każde polecenie wykonane wraz z jego wynikiem, oraz część extension.log, która 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
Komunikaty o błędach
| Błąd | Opis |
|---|---|
| Upłynął limit czasu aprowizacji rozszerzenia maszyny wirtualnej enablevmaccess. Aprowizacja rozszerzenia zajęła zbyt dużo czasu. Rozszerzenie nie zgłosiło komunikatu. Więcej informacji na temat rozwiązywania problemów można znaleźć na stronie https://aka.ms/vmextensionlinuxtroubleshoot. | Komunikat o błędzie wskazuje, że upłynął limit czasu aprowizacji rozszerzenia maszyny wirtualnej "enablevmaccess", ponieważ trwało zbyt długo. Ponadto rozszerzenie nie podało żadnego komunikatu o stanie podczas procesu. Aby rozwiązać ten problem, rozważ sprawdzenie wydajności i warunków sieciowych maszyny wirtualnej i ponów próbę wykonania operacji aprowizacji. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z rozszerzeniami maszyn wirtualnych. |
| Maszyna wirtualna zgłosiła błąd podczas przetwarzania rozszerzenia "enablevmaccess" (wydawca "Microsoft.OSTCExtensions" i typ "VMAccessForLinux"). Komunikat o błędzie: "Włączenie nie powiodło się: Nie określono hasła ani klucza ssh". Więcej informacji na temat rozwiązywania problemów można znaleźć na stronie https://aka.ms/vmextensionlinuxtroubleshoot . | Komunikat o błędzie wskazuje, że maszyna wirtualna nie może przetworzyć rozszerzenia "enablevmaccess", ponieważ nie określono hasła ani klucza SSH. Ten błąd jest skojarzony z wydawcą "Microsoft.OSTCExtensions" i typem "VMAccessForLinux". Aby rozwiązać ten problem, upewnij się, że podczas konfiguracji rozszerzenia podano hasło lub klucz SSH. |
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ć incydent do pomocy technicznej Azure. Przejdź do pomocy technicznej platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną. Aby uzyskać więcej informacji na temat pomocy technicznej platformy Azure, przeczytaj często zadawane pytania dotyczące planów pomocy technicznej platformy Azure.
Dalsze kroki
Aby wyświetlić kod, bieżące wersje i więcej dokumentacji, zobacz VMAccess Linux — GitHub.