Freigeben über


VMAccess-Erweiterung für Linux

Die VMAccess-Erweiterung wird verwendet, um administrative Benutzer zu verwalten, SSH zu konfigurieren und Datenträger auf virtuellen Azure Linux-Computern zu überprüfen oder zu reparieren. Die Erweiterung ist in Azure Resource Manager-Vorlagen integriert. Sie kann auch mithilfe der Azure CLI, Azure PowerShell, des Azure-Portals und der REST-API für virtuelle Azure-Computer aufgerufen werden.

In diesem Artikel wird beschrieben, wie Sie die VMAccess-Erweiterung über die Azure CLI und über eine Azure Resource Manager-Vorlage ausführen. Außerdem enthält dieser Artikel Schritte zur Problembehandlung für Linux-Systeme.

Hinweis

Wenn Sie die VMAccess-Erweiterung verwenden, um das Kennwort Ihrer VM zurückzusetzen, nachdem Sie die Microsoft Entra-Anmeldeerweiterung installiert haben, führen Sie die Microsoft Entra-Anmeldeerweiterung erneut aus, um die Microsoft Entra-Anmeldung für Ihre VM erneut zu aktivieren.

Voraussetzungen

Unterstützte Linux-Distributionen

Linux-Distribution x64 ARM64
Alma Linux 9.x und höher 9.x und höher
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Nicht unterstützt
Oracle Linux 6.4+, 7.x+, 8.x+ Nicht unterstützt
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+ 8.6+, 9.0+
Rocky Linux 9.x und höher 9.x und höher
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Tipps

  • VMAccess wurde für die Wiederherstellung des Zugriffs auf einen virtuellen Computer entwickelt, da der Zugriff verloren geht. Basierend auf diesem Prinzip gewährt es sudo die Berechtigung zum Konto, das im Benutzernamenfeld angegeben ist. Wenn Sie nicht möchten, dass ein Benutzer sudo-Berechtigungen erhält, melden Sie sich bei der VM an, und verwenden Sie integrierte Tools (z. B. usermod, chage usw.), um nicht privilegierte Benutzer zu verwalten.
  • Es kann nur eine Version der Erweiterung auf die VM angewendet werden. Um eine zweite Aktion auszuführen, aktualisieren Sie die vorhandene Erweiterung mit einer neuen Konfiguration.
  • Während eines Benutzerupdates ändert VMAccess die sshd_config-Datei und nimmt vorab eine Sicherung der Datei vor. Um die ursprüngliche gesicherte SSH-Konfiguration wiederherzustellen, führen Sie VMAccess mit restore_backup_ssh auf True festgelegt aus.

Erweiterungsschema

Die VMAccess-Erweiterungskonfiguration enthält Einstellungen für Benutzername, Kennwörter, SSH-Schlüssel usw. Sie können diese Informationen in Konfigurationsdateien speichern oder sie in der Befehlszeile oder in einer Azure Resource Manager-Vorlage (ARM-Vorlagen) angeben. Das folgende JSON-Schema enthält alle Eigenschaften, die in öffentlichen und geschützten Einstellungen verwendet werden können.

{
  "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
    } 
  }
}

Eigenschaftswerte

Name Wert/Beispiel Datentyp
apiVersion 2023-09-01 date
Herausgeber Microsoft.OSTCExtensions Zeichenfolge
Typ VMAccessForLinux Zeichenfolge
typeHandlerVersion 1.5 INT

Eigenschaftswerte der Einstellungen

Name Datentyp Beschreibung
check_disk boolean Gibt an, ob der Datenträger überprüft werden soll (optional). Nur einer zwischen check_disk und repair_disk kann auf „true“ festgelegt werden.
repair_disk boolean Gibt an, ob der Datenträger überprüft werden soll (optional). Nur einer zwischen check_disk und repair_disk kann auf „true“ festgelegt werden.
disk_name Zeichenfolge Name des zu reparierenden Datenträgers (erforderlich, wenn repair_disk „true“ ist).
username Zeichenfolge Der Name des zu verwaltenden Benutzers (erforderlich für alle Aktionen für ein Benutzerkonto).
Kennwort Zeichenfolge Das Kennwort, das für das Benutzerkonto festgelegt werden soll.
ssh_key Zeichenfolge Der öffentliche SSH-Schlüssel, der für das Benutzerkonto hinzugefügt werden soll. Der SSH-Schlüssel kann im Format ssh-rsa, ssh-ed25519 oder .pem sein.
reset_ssh boolean Gibt an, ob das SSH zurückgesetzt werden soll. Wenn true, wird die sshd_config Datei durch eine interne Ressourcendatei ersetzt, die der Standard-SSH-Konfiguration für diese Distribution entspricht.
remove_user Zeichenfolge Der Name des zu entfernenden Benutzers. Kann nicht bei reset_ssh, restore_backup_ssh oder password verwendet werden.
expiration Zeichenfolge Ablauf bis zum Festlegen für das Konto in Form von yyyy-mm-dd. Der Standardwert ist „nie“.
remove_prior_keys boolean Gibt an, ob alte SSH-Schlüssel beim Hinzufügen eines neuen entfernt werden sollen. Muss zusammen mit ssh_key verwendet werden.
restore_backup_ssh boolean Gibt an, ob das ursprüngliche gesicherte sshd_config wiederhergestellt werden soll.

Bereitstellung von Vorlagen

Azure VM-Erweiterungen können mithilfe von Azure Resource Manager-Vorlagen (ARM-Vorlagen) bereitgestellt werden. Das im vorherigen Abschnitt beschriebene JSON-Schema kann in einer ARM-Vorlage verwendet werden, um die VMAccess-Erweiterung während der Bereitstellung der Vorlage auszuführen. Eine Beispielvorlage, welche die VMAccess-Erweiterung enthält, finden Sie hier auf GitHub.

Die JSON-Konfiguration für eine VM-Erweiterung muss im VM-Ressourcenfragment der Vorlage geschachtelt sein – genauer gesagt im Objekt "resources": [] für die VM-Vorlage und bei einer VM-Skalierungsgruppe unter dem Objekt "virtualMachineProfile":"extensionProfile":{"extensions" :[].

Bereitstellung mithilfe der Azure-Befehlszeilenschnittstelle

Verwenden von Azure CLI-VM-Benutzerbefehlen

Die folgenden CLI-Befehle unter az vm-Benutzer verwenden die VMAccess-Erweiterung. Zum Verwenden dieser Befehle müssen Sie die neueste Version der Azure CLI installieren und Sie müssen sich mithilfe von az login bei einem Azure-Konto anmelden.

Aktualisieren eines SSH-Schlüssels

Das folgende Beispiel aktualisiert den SSH-Schlüssel für den Benutzer azureUser auf dem virtuellen Computer myVM:

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

Hinweis

Der Befehl az vm user update fügt den Text des neuen öffentlichen Schlüssels an die Datei ~/.ssh/authorized_keys für den Administratorbenutzer auf dem virtuellen Computer an. Vorhandene SSH-Schlüssel werden durch diesen Befehl weder ersetzt noch entfernt. Dieser Befehl entfernt keine vorherigen, zur Bereitstellungszeit festgelegten Schlüssel oder nachfolgende Updates über die VMAccess-Erweiterung.

Kennwort zurücksetzen

Das folgende Beispiel setzt das Kennwort für den Benutzer azureUser auf dem virtuellen Computer myVM zurück:

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --password myNewPassword

Neustarten von SSH

Im folgenden Beispiel wird auf einem virtuellen Computer namens myVM der SSH-Daemon neu gestartet und die SSH-Konfiguration auf Standardwerte zurückgesetzt:

az vm user reset-ssh \
  --resource-group myResourceGroup \
  --name myVM

Hinweis

Der az vm user reset-ssh Befehl ersetzt die sshd_config-Datei durch eine Standardkonfigurationsdatei aus dem internen Ressourcenverzeichnis. Mit diesem Befehl wird die ursprüngliche SSH-Konfiguration auf dem virtuellen Computer nicht wiederhergestellt.

Erstellen eines Administrators/sudo-Benutzers

Im folgenden Beispiel wird ein Benutzer mit dem Namen myNewUser mit sudo-Berechtigungen erstellt. Das Konto verwendet einen SSH-Schlüssel für die Authentifizierung auf der VM mit dem Namen myVM. Mit dieser Methode erhalten Sie wieder Zugriff auf eine VM, falls die aktuellen Anmeldeinformationen verloren gehen oder Sie diese vergessen haben. Als bewährte Methode sollten Konten mit sudo-Berechtigungen beschränkt werden.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

Löschen eines Benutzers

Das folgende Beispiel löscht einen Benutzer namens myNewUser vom virtuellen Computer myVM:

az vm user delete \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser

Verwenden von Azure CLI-VM/VMSS-Erweiterungsbefehlen

Sie können auch die Befehle az vm-Erweiterungssatz und az vmss-Erweiterungssatz verwenden, um die VMAccess-Erweiterung mit der angegebenen Konfiguration auszuführen.

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"}'

Die Parameter --settings und --protected-settings akzeptieren auch JSON-Dateipfade. Um zum Beispiel den öffentlichen SSH-Schlüssel eines Benutzers zu aktualisieren, erstellen Sie eine JSON-Datei namens update_ssh_key.json und fügen ihr Einstellungen im folgenden Format hinzu. Ersetzen Sie die Werte in der Datei durch Ihre eigenen Informationen:

{
  "username":"azureuser",
  "ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}

Führen Sie die VMAccess-Erweiterung über den folgenden Befehl aus:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --protected-settings update_ssh_key.json

Azure PowerShell-Bereitstellung

Azure PowerShell kann verwendet werden, um die VMAccess-Erweiterung auf einem vorhandenen virtuellen Computer oder in einer VM-Skalierungsgruppe bereitzustellen. Sie können die Erweiterung auf einem virtuellen Computer bereitstellen, indem Sie Folgendes ausführen:

$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

Sie können Erweiterungseinstellungen auch mithilfe von Zeichenfolgen bereitstellen und ändern:

$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

Führen Sie den folgenden Befehl aus, um einen Skalierungssatz für virtuelle Computer bereitzustellen:

$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

Problembehandlung und Support

Die VMAccess-Erweiterungsprotokolle sind nur lokal auf dem virtuellen Computer vorhanden und bei der Problembehandlung am informativsten.

Standort BESCHREIBUNG
/var/log/waagent.log Enthält Protokolle vom Linux-Agent und zeigt an, wann eine Aktualisierung der Erweiterung aufgetreten ist. Wir können es überprüfen, um sicherzustellen, dass die Erweiterung ausgeführt wurde.
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* Die VMAccess-Erweiterung erzeugt Protokolle, die hier zu finden sind. Das Verzeichnis enthält CommandExecution.log, wo Sie jeden Befehl finden können, der zusammen mit seinem Ergebnis ausgeführt wird, zusammen mit extension.log, das einzelne Protokolle für jede Ausführung enthält.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-<neuste Version>/config/* Die Konfiguration und Binärdateien für die VMAccess-VM-Erweiterung.

Sie können auch den Ausführungsstatus der VMAccess-Erweiterung zusammen mit anderen Erweiterungen auf einem bestimmten virtuellen Computer abrufen, indem Sie den folgenden Befehl ausführen:

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

Wenn Sie weitere Hilfe benötigen, wenden Sie sich an die Azure-Experten im Azure-Communitysupport. Alternativ dazu haben Sie die Möglichkeit, einen Azure-Supportfall zu erstellen. Navigieren Sie zum Azure-Support, und wählen Sie Support erhalten aus. Weitere Informationen zum Azure-Support finden Sie in den FAQ zu Azure-Supportprogrammen.

Nächste Schritte

Wenn Sie den Code, die aktuellen Versionen und weitere Dokumentationen sehen möchten, lesen Sie VMAccess Linux – GitHub.