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 mitrestore_backup_ssh
aufTrue
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.