Udostępnij za pośrednictwem


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-ed25519lub .pem .
reset_ssh boolean Czy zresetować protokół SSH. Jeśli trueparametr 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_sshi 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.