Freigeben über


Anmelden bei einer Linux-VM in Azure mithilfe von Microsoft Entra ID und OpenSSH

Zur Verbesserung der Sicherheit von virtuellen Linux-Computern in Azure können Sie die Integration in die Microsoft Entra-Authentifizierung durchführen. Sie können jetzt Microsoft Entra ID als zentrale Authentifizierungsplattform und Zertifizierungsstelle verwenden, um mithilfe von Microsoft Entra ID und der auf OpenSSH-Zertifikaten basierenden Authentifizierung eine SSH-Verbindung mit einer Linux-VM herzustellen. Mit dieser Funktion können Organisationen den Zugriff auf VMs mit der rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) von Azure und Richtlinien für bedingten Zugriff verwalten.

In diesem Artikel wird beschrieben, wie Sie eine Linux-VM erstellen und konfigurieren und sich mithilfe der auf OpenSSH-Zertifikaten basierenden Authentifizierung bei Microsoft Entra ID anmelden.

Die Verwendung von Microsoft Entra ID mit der zertifikatbasierten OpenSSH-Authentifizierung für die Anmeldung bei Linux-VMs in Azure bietet viele sicherheitsrelevante Vorteile. Dazu gehören:

  • Verwenden Sie Ihre Microsoft Entra-Anmeldeinformationen, um sich bei Linux-VMs in Azure anzumelden.
  • Richten Sie eine auf SSH-Schlüsseln basierende Authentifizierung ein, ohne SSH-Schlüssel an Benutzer verteilen oder öffentliche SSH-Schlüssel auf allen bereitgestellten Linux-VMs in Azure bereitstellen zu müssen. Das ist sehr viel einfacher, als sich Gedanken über verstreute und veraltete öffentliche SSH-Schlüssel machen zu müssen, die möglicherweise zu einem nicht autorisierten Zugriff führen.
  • Reduzieren Sie die Abhängigkeit von lokalen Administratorkonten, und vermeiden Sie schwache Anmeldeinformationen sowie den Diebstahl von Anmeldeinformationen.
  • Helfen Sie dabei, Linux-VMs abzusichern, indem Sie für Microsoft Entra ID Richtlinien zur Komplexität und Lebensdauer von Kennwörtern konfigurieren.
  • Geben Sie bei Nutzung von RBAC an, wer sich als regulärer Benutzer oder mit Administratorrechten bei einer VM anmelden kann. Wenn Benutzer Ihrem Team beitreten, können Sie die Azure RBAC-Richtlinie für die VM aktualisieren, um den Zugriff entsprechend zu erteilen. Wenn Mitarbeiter Ihre Organisation verlassen und ihre Benutzerkonten in Microsoft Entra ID deaktiviert oder entfernt werden, haben sie keinen Zugriff mehr auf Ihre Ressourcen.
  • Mit dem Feature „Bedingter Zugriff“ können Sie Richtlinien so konfigurieren, dass Multi-Faktor-Authentifizierung erforderlich ist oder dass das Clientgerät ein verwaltetes Gerät (z. B. ein konformes oder hybrides in Microsoft Entra eingebundenes Gerät) sein muss, bevor Sie damit eine SSH-Verbindung mit Linux-VMs herstellen können.
  • Erzwingen Sie mithilfe von Azure-Bereitstellungs- und Überwachungsrichtlinien die Microsoft Entra-Anmeldung für Linux-VMs, und erkennen Sie nicht genehmigte lokale Konten.

Die Anmeldung bei Linux-VMs über Microsoft Entra ID funktioniert auch bei Kunden, die mit Active Directory-Verbunddienste (AD FS) arbeiten.

Unterstützte Linux-Distributionen und Azure-Regionen

Die folgenden Linux-Distributionen werden derzeit für Bereitstellungen in einer unterstützten Region unterstützt:

Distribution Version
Common Base Linux Mariner (CBL-Mariner) CBL-Mariner 1, CBL-Mariner 2
AlmaLinux AlmaLinux 8, AlmaLinux 9
Debian Debian 9, Debian 10, Debian 11, Debian 12
openSUSE openSUSE Leap 42.3, openSUSE Leap 15.1 oder höher
Oracle Oracle Linux 8, Oracle Linux 9
Red Hat Enterprise Linux (RHEL) RHEL 7.4 bis RHEL 7.9 und ab RHEL 8.3+, RHEL 9.0+
Rocky Rocky 8, Rocky 9
SUSE Linux Enterprise Server (SLES) SLES 12, SLES 15.1 oder höher
Ubuntu Ubuntu 16.04 bis Ubuntu 24.04

Für diese Funktion werden derzeit die folgenden Azure-Regionen unterstützt:

  • Azure Global
  • Azure Government
  • Microsoft Azure, betrieben von 21Vianet

Die SSH-Erweiterung für die Azure CLI in Azure Kubernetes Service-Clustern (AKS) wird nicht unterstützt. Weitere Informationen finden Sie unter Unterstützungsrichtlinien für AKS.

Wenn Sie die Azure CLI lokal installieren und einsetzen möchten, ist mindestens die Azure CLI-Version 2.22.1 erforderlich. Führen Sie az --version aus, um die Version zu ermitteln. Installations- und Upgradeinformationen finden Sie bei Bedarf unter Installieren von Azure CLI.

Hinweis

Diese Funktion ist auch für Server mit Azure Arc-Unterstützung verfügbar.

Erfüllen von Anforderungen für die Anmeldung mit Microsoft Entra ID mithilfe der auf OpenSSH-Zertifikaten basierenden Authentifizierung

Um die Microsoft Entra-Anmeldung mit auf OpenSSH-Zertifikaten basierender Authentifizierung für Linux-VMs in Azure zu aktivieren, müssen die folgenden Voraussetzungen für das Netzwerk, die VM und den Client (SSH-Client) erfüllt sein.

Network

Die Netzwerkkonfiguration der VM muss über TCP-Port 443 ausgehenden Zugriff auf die folgenden Endpunkte zulassen.

Azure Global:

  • https://packages.microsoft.com: für Paketinstallation und Upgrades.
  • http://169.254.169.254: Azure Instance Metadata Service-Endpunkt.
  • https://login.microsoftonline.com: für PAM-basierte Authentifizierungsflows (Pluggable Authentication Modules).
  • https://pas.windows.net: für Azure RBAC-Flows.

Azure Government:

  • https://packages.microsoft.com: für Paketinstallation und Upgrades.
  • http://169.254.169.254: Azure Instance Metadata Service-Endpunkt.
  • https://login.microsoftonline.us: für PAM-basierte Authentifizierungsflows.
  • https://pasff.usgovcloudapi.net: für Azure RBAC-Flows.

Microsoft Azure, betrieben von 21Vianet:

  • https://packages.microsoft.com: für Paketinstallation und Upgrades.
  • http://169.254.169.254: Azure Instance Metadata Service-Endpunkt.
  • https://login.chinacloudapi.cn: für PAM-basierte Authentifizierungsflows.
  • https://pas.chinacloudapi.cn: für Azure RBAC-Flows.

Virtueller Computer

Stellen Sie sicher, dass Ihre VM mit der folgenden Funktionalität konfiguriert ist:

  • Systemseitig zugewiesene verwaltete Identität. Diese Option wird automatisch ausgewählt, wenn Sie VMs im Azure-Portal erstellen und die Microsoft Entra-Anmeldeoption auswählen. Sie können die systemseitig zugewiesene verwaltete Identität auch mithilfe der Azure CLI auf einer neuen oder vorhandenen VM aktivieren.
  • aadsshlogin und aadsshlogin-selinux (sofern zutreffend). Diese Pakete werden mit der VM-Erweiterung AADSSHLoginForLinux installiert. Die Erweiterung wird installiert, wenn Sie VMs über das Azure-Portal oder die Azure CLI erstellen und (auf der Registerkarte Verwaltung) die Anmeldung über Microsoft Entra aktivieren.

Client

Stellen Sie sicher, dass Ihr Client folgende Anforderungen erfüllt:

  • Der SSH-Client muss für die Authentifizierung OpenSSH-Zertifikate unterstützen. Zur Erfüllung dieser Anforderung können Sie die Azure CLI (ab 2.21.1) mit OpenSSH (enthalten in Windows 10 ab Version 1803) oder Azure Cloud Shell verwenden.

  • SSH-Erweiterung für die Azure CLI. Sie können diese Erweiterung mithilfe von az extension add --name ssh installieren. Sie müssen diese Erweiterung nicht installieren, wenn Sie Azure Cloud Shell verwenden, da sie bereits vorinstalliert ist.

    Wenn Sie einen anderen SSH-Client als die Azure CLI oder Azure Cloud Shell verwenden, der OpenSSH-Zertifikate unterstützt, müssen Sie weiterhin die Azure CLI mit der SSH-Erweiterung nutzen, um kurzlebige SSH-Zertifikate und optional eine Konfigurationsdatei abzurufen. Anschließend können Sie die Konfigurationsdatei mit Ihrem SSH-Client verwenden.

  • TCP-Konnektivität zwischen dem Client und entweder der öffentlichen oder der privaten IP-Adresse der VM. (ProxyCommand oder SSH-Weiterleitung an einen Computer mit Konnektivität funktioniert ebenfalls.)

Wichtig

Auf PuTTY basierende SSH-Clients unterstützen jetzt OpenSSH-Zertifikate und eignen sich für die Microsoft Entra-Anmeldung mit auf OpenSSH-Zertifikaten basierender Authentifizierung.

Aktivieren der Microsoft Entra-Anmeldung für eine Linux-VM in Azure

Für die Microsoft Entra-Anmeldung einer Linux-VM in Azure müssen Sie zuerst die Microsoft Entra-Anmeldeoption für Ihre Linux-VM aktivieren. Anschließend konfigurieren Sie die Zuweisung von Azure-Rollen an Benutzer, die autorisiert sind, sich bei der VM anzumelden. Schließlich stellen Sie mit dem OpenSSH unterstützenden SSH-Client, z. B. Azure CLI oder Azure Cloud Shell, eine SSH-Verbindung mit Ihrer Linux-VM her.

Es gibt zwei Möglichkeiten, wie Sie die Microsoft Entra-Anmeldung für die Linux-VM aktivieren können:

  • Im Azure-Portal beim Erstellen einer virtuellen Linux-VM
  • In der Azure-Cloud Shell-Umgebung, wenn Sie eine Linux-VM erstellen oder eine vorhandene einsetzen

Azure-Portal

Im Azure-Portal können Sie die Microsoft Entra-Anmeldung für alle unterstützten Linux-Distributionen aktivieren.

So erstellen Sie beispielsweise in Azure eine VM mit Ubuntu Server 18.04 LTS (Long-Term Support) und Microsoft Entra-Anmeldung:

  1. Melden Sie sich mit einem Konto, das Zugriff zum Erstellen von VMs hat, beim Azure-Portal an, und wählen Sie dann + Ressource erstellen aus.
  2. Wählen Sie in der Ansicht Beliebt unter Ubuntu Server 18.04 LTS die Option Erstellen aus.
  3. Gehen Sie auf der Registerkarte Verwaltung so vor:
    1. Aktivieren Sie das Kontrollkästchen Mit Microsoft Entra ID anmelden.
    2. Stellen Sie sicher, dass das Kontrollkästchen Systemseitig verwaltete Identität aktiviert ist.
  4. Führen Sie die weiteren Schritte zum Erstellen eines virtuellen Computers aus. Sie müssen ein Administratorkonto mit Benutzernamen und Kennwort oder öffentlichem SSH-Schlüssel erstellen.

Azure Cloud Shell

Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausführen können. Allgemeine Tools sind in Cloud Shell vorinstalliert und für die Verwendung mit Ihrem Konto konfiguriert. Wählen Sie einfach die Schaltfläche Kopieren aus, um den Code zu kopieren. Fügen Sie ihn anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um ihn auszuführen.

Cloud Shell kann auf mehrere Arten geöffnet werden:

  • Klicken Sie in der rechten oberen Ecke eines Codeblocks auf Ausprobieren.
  • Öffnen Sie Cloud Shell in Ihrem Browser.
  • Wählen Sie im Menü rechts oben im Azure-Portal die Schaltfläche „Cloud Shell“ aus.

Wenn Sie die Azure CLI lokal installieren und verwenden möchten, müssen Sie für diesen Artikel mindestens die Azure CLI-Version 2.22.1 ausführen. Führen Sie az --version aus, um die Version zu ermitteln. Installations- und Upgradeinformationen finden Sie bei Bedarf unter Installieren von Azure CLI.

  1. Erstellen Sie durch Ausführen von az group create eine Ressourcengruppe.
  2. Erstellen Sie durch Ausführen von az vm create eine VM. Verwenden Sie eine unterstützte Distribution in einer unterstützten Region.
  3. Installieren Sie durch Ausführen von az vm extension set die VM-Erweiterung für die Microsoft Entra-Anmeldung.

Im folgenden Beispiel wird eine VM bereitgestellt und dann die Erweiterung installiert, um die Microsoft Entra-Anmeldung für eine Linux-VM zu aktivieren. VM-Erweiterungen sind kleine Anwendungen, die Konfigurations- und Automatisierungsaufgaben auf Azure-VMs nach der Bereitstellung ermöglichen. Passen Sie das Beispiel nach Bedarf so an, dass Ihre Testanforderungen erfüllt werden.

az group create --name AzureADLinuxVM --location southcentralus
az vm create \
    --resource-group AzureADLinuxVM \
    --name myVM \	
    --image Ubuntu2204 \
    --assign-identity \
    --admin-username azureuser \
    --generate-ssh-keys
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADSSHLoginForLinux \
    --resource-group AzureADLinuxVM \
    --vm-name myVM

Das Erstellen des virtuellen Computers und der unterstützenden Ressourcen dauert einige Minuten.

Die Erweiterung „AADSSHLoginForLinux“ kann auf einem vorhandenen virtuellen Linux-Computer (unterstützte Distribution), auf dem ein VM-Agent ausgeführt wird, installiert werden, um die Microsoft Entra Authentifizierung zu aktivieren. Wenn Sie diese Erweiterung auf einer bereits erstellten VM bereitstellen, muss dieser mindestens 1 GB Arbeitsspeicher zugeordnet sein, da die Installation andernfalls fehlschlägt.

Succeeded wird als Wert von provisioningState angezeigt, wenn die Erweiterung erfolgreich auf der VM installiert wurde. Auf dem virtuellen Computer muss ein VM-Agent ausgeführt werden, damit die Erweiterung installiert werden kann.

Konfigurieren der Rollenzuweisungen für den virtuellen Computer

Nach Erstellen der VM müssen Sie eine der folgenden Azure-Rollen zuweisen, um festzulegen, wer sich bei der VM anmelden kann. Um diese Rollen zuzuweisen, müssen Sie über die Rolle Administrator für den Datenzugriff für VMs oder eine beliebige Rolle verfügen, die die Microsoft.Authorization/roleAssignments/write-Aktion enthält, z. B. die Rolle Administrator für rollenbasierte Zugriffssteuerung. Wenn Sie jedoch eine andere Rolle als „Administrator für den Datenzugriff für VMs“ verwenden, wird empfohlen, eine Bedingung hinzuzufügen, um die Berechtigung zum Erstellen von Rollenzuweisungen zu verringern.

  • Anmeldeinformationen des VM-Administrators: Benutzer, denen diese Rolle zugewiesen ist, können sich mit Administratorberechtigungen bei einer Azure-VM anmelden.
  • Anmeldeinformationen für VM-Benutzer: Benutzer, denen diese Rolle zugewiesen ist, können sich mit normalen Benutzerberechtigungen bei einer Azure-VM anmelden.

Damit sich ein Benutzer über SSH bei einer VM anmelden kann, müssen Sie der Ressourcengruppe mit der VM und den zugehörigen virtuellen Netzwerken, Netzwerkschnittstellen, öffentlichen IP-Adressen oder Lastenausgleichsressourcen die Rolle „Anmeldeinformationen des VM-Administrators“ oder „Anmeldeinformationen für VM-Benutzer“ zuweisen.

Ein Azure-Benutzer mit der Rolle „Besitzer“ oder „Mitwirkender“ für eine VM verfügt nicht automatisch über Berechtigungen zur Microsoft Entra-Anmeldung bei der VM über SSH. Es gibt eine beabsichtigte (und überwachte) Trennung zwischen der Gruppe von Personen, die VMs steuern, und der Gruppe von Personen, die auf VMs zugreifen können.

Es gibt zwei Möglichkeiten zum Konfigurieren von Rollenzuweisungen für eine VM:

  • Azure-Portal-Benutzeroberfläche
  • Mit der Azure Cloud Shell

Hinweis

Die Rollen „Anmeldeinformationen des VM-Administrators“ und „Anmeldeinformationen für VM-Benutzer“ verwenden dataActions und können im Verwaltungsgruppen-, Abonnement-, Ressourcengruppen- oder Ressourcenbereich zugewiesen werden. Es wird empfohlen, die Rollen auf der Ebene der Verwaltungsgruppe, des Abonnements oder der Ressourcengruppe zuzuweisen und nicht auf der Ebene einzelner VMs. Auf diese Weise vermeiden Sie das Risiko, dass die Obergrenze von Azure-Rollenzuweisungen pro Abonnement erreicht wird.

Azure-Portal

So konfigurieren Sie Rollenzuweisungen für Microsoft Entra ID-fähige Linux-VMs:

  1. Wählen Sie für Ressourcengruppe die Ressourcengruppe mit der VM und dem ihr zugeordneten virtuellen Netzwerk, der Netzwerkschnittstelle, der öffentlichen IP-Adresse oder der Ressource für den Lastenausgleich aus.

  2. Wählen Sie Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.

  4. Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

    Einstellung Wert
    Rolle VM-Administratoranmeldung oder VM-Benutzeranmeldung
    Zugriff zuweisen zu Benutzer, Gruppe, Dienstprinzipal oder verwaltete Identität

    Screenshot: Seite zum Hinzufügen einer Rollenzuweisung

Nach einigen Augenblicken wird dem Sicherheitsprinzipal die Rolle für den Bereich zugewiesen.

Azure Cloud Shell

Im folgenden Beispiel wird az role assignment create verwendet, um dem aktuellen Azure-Benutzer die Rolle „VM-Administratoranmeldung“ für den virtuellen Computer zuzuweisen. Den Benutzernamen Ihres aktuellen Azure-Kontos rufen Sie mithilfe von az account show ab. Den Geltungsbereich legen Sie mithilfe von az vm show auf die in einem vorherigen Schritt erstellte VM fest.

Sie können den Geltungsbereich auch auf Ressourcengruppen- oder Abonnementebene zuweisen. Es gelten normale Azure RBAC-Vererbungsberechtigungen.

username=$(az account show --query user.name --output tsv)
rg=$(az group show --resource-group myResourceGroup --query id -o tsv)

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee $username \
    --scope $rg

Hinweis

Wenn die Microsoft Entra-Domäne und die Domäne des Benutzeranmeldenamens nicht übereinstimmen, müssen Sie die Objekt-ID des Benutzerkontos mit --assignee-object-id angeben. Die Angabe des Benutzernamens für --assignee genügt nicht. Sie können die Objekt-ID Ihres Benutzerkontos mithilfe von az ad user list abrufen.

Weitere Informationen zur rollenbasierten Azure-Zugriffssteuerung (Azure RBAC) zum Verwalten des Zugriffs auf Ihre Azure-Abonnementressourcen finden Sie unter Schritte zum Zuweisen einer Azure-Rolle.

Installieren der SSH-Erweiterung für die Azure CLI

Wenn Sie Azure Cloud Shell verwenden, unterscheidet sich das Setup nicht, da sowohl die mindestens erforderliche Version der Azure CLI als auch die SSH-Erweiterung für die Azure CLI bereits in der Cloud Shell-Umgebung enthalten sind.

Führen Sie den folgenden Befehl aus, um die SSH-Erweiterung für die Azure CLI hinzuzufügen:

az extension add --name ssh

Für die Erweiterung ist mindestens Version 0.1.4 erforderlich. Überprüfen Sie die installierte Version mit dem folgenden Befehl:

az extension show --name ssh

Erzwingen von Richtlinien für bedingten Zugriff

Sie können Richtlinien für bedingten Zugriff erzwingen, die mit der Microsoft Entra-Anmeldung aktiviert werden, z. B.:

  • Erzwingen der Multi-Faktor-Authentifizierung
  • Anfordern eines konformen oder hybriden in Microsoft Entra eingebundenen Geräts für das Gerät, auf dem der SSH-Client ausgeführt wird.
  • Überprüfen auf Risiken, bevor Sie den Zugriff auf Linux-VMs in Azure autorisieren

In der Richtlinie für bedingten Zugriff ist die Anwendung unter dem Namen Azure Linux VM Sign-In aufgeführt.

Hinweis

Die Erzwingung von Richtlinien für bedingten Zugriff, die die Konformität des Geräts oder eine hybride Microsoft Entra-Einbindung auf dem Gerät erfordern, auf dem der SSH-Client ausgeführt wird, funktioniert nur mit der unter Windows und macOS ausgeführten Azure CLI. Sie wird nicht unterstützt, wenn Sie die Azure CLI unter Linux oder Azure Cloud Shell verwenden.

Fehlende Anwendung

Wenn in „Bedingter Zugriff“ die Anwendung „Azure Linux VM Sign-In“ fehlt, stellen Sie sicher, dass sich die Anwendung nicht im Mandanten befindet:

  1. Melden Sie sich beim Microsoft Entra Admin Center mindestens als Cloudanwendungsadministrator an.
  2. Browsen Sie zu Identität>Anwendungen>Unternehmensanwendungen.
  3. Entfernen Sie die Filter, um alle Anwendungen anzuzeigen, und suchen Sie nach VM. Wenn keine Microsoft Azure Linux VM-Anmeldung angezeigt wird, fehlt das Dienstprinzipal im Mandanten.

Anmelden mit einem Microsoft Entra-Benutzerkonto, um per SSH auf die Linux-VM zuzugreifen

Anmelden mithilfe der Azure CLI

Geben Sie az login ein. Dieser Befehl öffnet ein Browserfenster, in dem Sie sich mit Ihrem Microsoft Entra-Konto anmelden können.

az login 

Geben Sie dann az ssh vm ein. Im folgenden Beispiel wird die entsprechende IP-Adresse für den virtuellen Computer automatisch aufgelöst.

az ssh vm -n myVM -g AzureADLinuxVM

Geben Sie, wenn Sie dazu aufgefordert werden, auf der Anmeldeseite Ihre Microsoft Entra-Anmeldeinformationen ein, führen Sie die Multi-Faktor-Authentifizierung aus, und/oder erfüllen Sie die Geräteanforderungen. Sie werden nur aufgefordert, wenn Ihre Azure CLI-Sitzung die erforderlichen Kriterien für den bedingten Zugriff noch nicht erfüllt. Schließen Sie das Browserfenster, und kehren Sie zur SSH-Eingabeaufforderung zurück. Sie werden automatisch mit der VM verbunden.

Sie sind nun mit den entsprechend zugewiesenen Rollenberechtigungen (z. B. „VM-Benutzer“ oder „VM-Administrator“) bei der Linux-VM angemeldet. Wenn Ihrem Benutzerkonto die Rolle „VM-Administratoranmeldung“ zugewiesen ist, können Sie mit „sudo“ Befehle ausführen, für die Stammberechtigungen erforderlich sind.

Anmelden mithilfe von Azure Cloud Shell

Sie können mit Azure Cloud Shell eine Verbindung zu virtuellen Computern herzustellen, ohne eine lokale Installation auf Ihrem Client-Computer vornehmen zu müssen. Starten Sie Cloud Shell, indem Sie rechts oben im Azure-Portal auf das Shellsymbol klicken.

Cloud Shell stellt automatisch im Kontext des angemeldeten Benutzers eine Verbindung mit einer Sitzung her. Führen Sie nun az login erneut aus, und durchlaufen Sie den interaktiven Anmeldevorgang:

az login

Anschließend können Sie mit den normalen az ssh vm-Befehlen eine Verbindung herstellen, indem Sie den Namen und die Ressourcengruppe oder die IP-Adresse der VM angeben:

az ssh vm -n myVM -g AzureADLinuxVM

Hinweis

Das Erzwingen einer Richtlinie für bedingten Zugriff, die Gerätekonformität oder ein hybrid in Microsoft Entra eingebundenes Gerät erfordert, wird bei Verwenden von Azure Cloud Shell nicht unterstützt.

Anmelden mit dem Microsoft Entra-Dienstprinzipal zum Herstellen einer SSH-Verbindung mit der Linux-VM

Die Azure CLI unterstützt die Authentifizierung mit einem Dienstprinzipal anstelle eines Benutzerkontos. Da Dienstprinzipale nicht an einen bestimmten Benutzer gebunden sind, können Kunden damit eine SSH-Verbindung mit einer VM herstellen, um etwaige Automatisierungsszenarien zu unterstützen. Dem Dienstprinzipal müssen VM-Administrator- oder VM-Benutzerrechte zugewiesen sein. Weisen Sie Berechtigungen auf Abonnement- oder Ressourcengruppenebene zu.

Im folgenden Beispiel werden dem Dienstprinzipal auf Ressourcengruppenebene VM-Administratorrechte zugewiesen. Ersetzen Sie die Platzhalter für Dienstprinzipalobjekt-ID, Abonnement-ID und Ressourcengruppenname.

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee-object-id <service-principal-objectid> \
    --assignee-principal-type ServicePrincipal \
    --scope "/subscriptions/<subscription-id>/resourceGroups/<resourcegroup-name>"

Authentifizieren Sie sich anhand des folgenden Beispiels mithilfe des Dienstprinzipals bei der Azure CLI. Weitere Informationen finden Sie im Artikel Anmelden mit einem Dienstprinzipal.

az login --service-principal -u <sp-app-id> -p <password-or-cert> --tenant <tenant-id>

Sobald die Authentifizierung mit einem Dienstprinzipal abgeschlossen ist, verwenden Sie die normalen SSH-Befehle in der Azure CLI, um eine Verbindung mit der VM herzustellen:

az ssh vm -n myVM -g AzureADLinuxVM

Exportieren der SSH-Konfiguration für die Verwendung mit OpenSSH unterstützenden SSH-Clients

Bei der Anmeldung bei Linux-VMs in Azure mithilfe von Microsoft Entra ID wird der Export des OpenSSH-Zertifikats und der Konfiguration unterstützt. Das heißt, dass Sie für die Anmeldung bei Microsoft Entra ID alle SSH-Clients verwenden können, die OpenSSH-Zertifikate unterstützen. Im folgenden Beispiel wird die Konfiguration aller IP-Adressen exportiert, die der VM zugewiesen sind:

az ssh config --file ~/.ssh/config -n myVM -g AzureADLinuxVM

Alternativ können Sie die Konfiguration exportieren, indem Sie nur die IP-Adresse angeben. Ersetzen Sie die IP-Adresse im folgenden Beispiel durch die öffentliche oder private IP-Adresse der VM. (Bei privaten IP-Adressen müssen Sie selbst für Konnektivität sorgen.) Geben Sie az ssh config -h ein, um Hilfe zu diesem Befehl zu erhalten.

az ssh config --file ~/.ssh/config --ip 10.11.123.456

Anschließend können Sie über die normale OpenSSH-Nutzung eine Verbindung zu dem virtuellen Computer herstellen. Die Verbindung kann über einen beliebigen SSH-Client hergestellt werden, der OpenSSH verwendet.

Ausführen von sudo mit Microsoft Entra Anmeldung

Wenn Benutzer mit der Rolle „VM-Administrator“ erfolgreich eine SSH-Verbindung mit einer Linux-VM hergestellt haben, können sie sudo ohne weitere Interaktions- oder Authentifizierungsanforderung ausführen. Benutzer, denen die Rolle „VM-Benutzer“ zugewiesen ist, können sudo nicht ausführen.

Herstellen einer Verbindung mit VMs in VM-Skalierungsgruppen

VM-Skalierungsgruppen werden unterstützt, doch sind die Schritte zum Aktivieren und Herstellen einer Verbindung mit den VMs in einer VM-Skalierungsgruppe etwas anders:

  1. Erstellen Sie eine VM-Skalierungsgruppe, oder wählen Sie eine bereits vorhandene aus. Aktivieren Sie für Ihre VM-Skalierungsgruppe eine systemseitig zugewiesene verwaltete Identität:

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Installieren Sie die Microsoft Entra-Erweiterung in Ihrer VM-Skalierungsgruppe:

    az vmss extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group AzureADLinuxVM --vmss-name myVMSS
    

VM-Skalierungsgruppen besitzen in der Regel keine öffentlichen IP-Adressen. Sie müssen diese mit einem anderen Computer vernetzen, der auf das virtuelle Azure-Netzwerk zugreifen kann. In diesem Beispiel wird gezeigt, wie Sie mithilfe der privaten IP-Adresse einer VM in einer VM-Skalierungsgruppe eine Verbindung über einen Computer im selben virtuellen Netzwerk herstellen:

az ssh vm --ip 10.11.123.456

Hinweis

Sie können die IP-Adressen der VMs in der VM-Skalierungsgruppe nicht automatisch mithilfe der Schalter --resource-group und --name ermitteln.

Migrieren von der vorherigen (Vorschau-) Version

Wenn Sie eine frühere Version der Microsoft Entra-Anmeldung für Linux auf Basis des Gerätecodeflows verwenden, führen mithilfe der Azure CLI die folgenden Schritte aus:

  1. Deinstallieren Sie auf der VM die Erweiterung AADLoginForLinux:

    az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
    

    Hinweis

    Die Deinstallation der Erweiterung kann misslingen, wenn Microsoft Entra-Benutzer aktuell bei der VM angemeldet sind. Stellen Sie sicher, dass alle Benutzer zuerst abgemeldet werden.

  2. Aktivieren Sie eine systemseitig zugewiesene verwaltete Identität auf Ihrer VM:

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Installieren Sie auf der VM die Erweiterung AADSSHLoginForLinux:

    az vm extension set \
        --publisher Microsoft.Azure.ActiveDirectory \
        --name AADSSHLoginForLinux \
        --resource-group myResourceGroup \
        --vm-name myVM
    

Erfüllen von Standards und Bewertung der Konformität mit Azure Policy

Verwenden Sie Azure Policy für Folgendes:

  • Stellen Sie sicher, dass die Microsoft Entra-Anmeldung für Ihre neuen und vorhandenen Linux-VMs aktiviert ist.
  • Bewerten Sie die Konformität Ihrer Umgebung auf einem Konformitätsdashboard.

Diese Funktionalität ermöglicht zahlreiche Erzwingungsstufen. Sie können neue und vorhandene Linux-VMs in Ihrer Umgebung kennzeichnen, für welche die Microsoft Entra-Anmeldung nicht aktiviert ist. Sie können Azure Policy auch zum Bereitstellen der Microsoft Entra-Erweiterung auf neuen Linux-VMs verwenden, auf denen Microsoft Entra-Anmeldungen noch nicht aktiviert sind, Sie können aber auch vorhandene Linux-VMs auf denselben Standard aktualisieren.

Neben diesen Möglichkeiten können Sie Azure Policy auch zum Erkennen und Kennzeichnen von Linux-VMs einsetzen, auf denen nicht genehmigte lokale Konten erstellt wurden. Weitere Informationen finden Sie unter Was ist Azure Policy?.

Beheben von Problemen bei der Anmeldung

Mithilfe der folgenden Abschnitte können Sie häufig auftretende Fehler beheben, wenn Sie versuchen, mit Microsoft Entra-Anmeldeinformationen eine SSH-Verbindung herzustellen.

Token konnte nicht aus lokalem Cache abgerufen werden

Wenn Sie die Meldung erhalten, dass das Token nicht aus dem lokalen Cache abgerufen werden konnte, müssen Sie az login erneut ausführen und einen interaktiven Anmeldevorgang durchlaufen. Lesen Sie den Abschnitt zum Anmelden mithilfe von Azure Cloud Shell.

Zugriff verweigert: Azure-Rolle nicht zugewiesen

Wenn an der SSH-Eingabeaufforderung die Fehlermeldung „Azure-Rolle nicht zugewiesen“ angezeigt wird, prüfen Sie, ob Sie für die VM Azure RBAC-Richtlinien konfiguriert haben, mit denen dem Benutzer entweder die Rolle „Anmeldeinformationen des VM-Administrators“ oder die Rolle „Anmeldeinformationen für VM-Benutzer“ zugewiesen wurde. Wenn Probleme bei Zuweisungen von Azure-Rollen auftreten, finden Sie weitere Informationen im Artikel Behandeln von Problemen bei Azure RBAC.

Probleme beim Löschen der alten Erweiterung (AADLoginForLinux)

Wenn bei den Deinstallationsskripts Fehler auftreten, bleibt die Erweiterung möglicherweise in einem Übergangszustand hängen. In diesem Fall kann die Erweiterung bei ihrer Entfernung Pakete zurücklassen, die sie eigentlich deinstallieren sollte. In solchen Fällen ist es besser, die alten Pakete manuell zu deinstallieren und dann zu versuchen, den Befehl az vm extension delete auszuführen.

So deinstallieren Sie alte Pakete

  1. Melden Sie sich als lokaler Benutzer mit Administratorrechten an.
  2. Stellen Sie sicher, dass keine Microsoft Entra-Benutzer angemeldet sind. Rufen Sie den Befehl who -u auf, um festzustellen, wer angemeldet ist. Rufen Sie dann sudo kill <pid> für alle Sitzungsprozesse auf, die der vorherige Befehl gemeldet hat.
  3. Führen Sie sudo apt remove --purge aadlogin (Ubuntu/Debian), sudo yum remove aadlogin (RHEL) oder sudo zypper remove aadlogin (openSUSE/SLES) aus.
  4. Wenn beim Befehl ein Fehler auftritt, probieren Sie die Tools auf niedriger Ebene mit deaktivierten Skripts aus:
    1. Führen Sie für Ubuntu/Debian sudo dpkg --purge aadlogin aus. Wenn es aufgrund des Skripts weiterhin zu Fehlern kommt, löschen Sie die Datei /var/lib/dpkg/info/aadlogin.prerm, und versuchen Sie es erneut.
    2. Führen Sie in allen anderen Fällen rpm -e --noscripts aadogin aus.
  5. Wiederholen Sie die Schritte 3 und 4 für das Paket aadlogin-selinux.

Fehler bei der Installation der Erweiterung

Die Installation der VM-Erweiterung AADSSHLoginForLinux auf vorhandenen VMs schlägt mit einem der folgenden bekannten Fehlercodes fehl.

Exitcode ungleich null: 22

Wenn Sie den Exitcode 22 erhalten, wird der Status der VM-Erweiterung AADSSHLoginForLinux im Portal als Im Übergang angezeigt.

Dieser Fehler tritt auf, da eine vom systemseitig zugewiesene verwaltete Identität erforderlich ist.

Die Lösung ist wie folgt:

  1. Deinstallieren Sie die Erweiterung, bei der der Fehler aufgetreten ist.
  2. Aktivieren Sie eine systemseitig zugewiesene verwaltete Identität auf der Azure-VM.
  3. Führen Sie den Installationsbefehl für die Erweiterung erneut aus.

Exitcode ungleich null: 23

Wenn Sie den Exitcode 23 erhalten, wird der Status der VM-Erweiterung AADSSHLoginForLinux im Portal als Im Übergang angezeigt.

Dieser Fehler tritt auf, wenn die ältere VM-Erweiterung AADLoginForLinux noch installiert ist.

Die Lösung ist das Deinstallieren der älteren VM-Erweiterung AADLoginForLinux auf der VM. Der Status der neuen VM-Erweiterung AADSSHLoginForLinux wird dann im Portal in Bereitstellung erfolgreich geändert.

Installationsfehler bei Verwendung eines HTTP-Proxys

Die Erweiterung benötigt eine HTTP-Verbindung, um Pakete zu installieren und zu überprüfen, ob eine Systemidentität vorhanden ist. Sie wird im Kontext von walinuxagent.service ausgeführt und erfordert eine Änderung, um den Agent über die Proxyeinstellungen zu informieren. Öffnen Sie die Datei /lib/systemd/system/walinuxagent.service auf dem Zielcomputer, und fügen Sie nach [Service] die folgende Zeile hinzu:

[Service]
Environment="http_proxy=http://proxy.example.com:80/"
Environment="https_proxy=http://proxy.example.com:80/"
Environment="no_proxy=169.254.169.254"

Starten Sie den Agent neu (sudo systemctl restart walinuxagent). Versuchen Sie es anschließend erneut.

Fehler beim Befehl „az ssh vm“: KeyError access_token

Wenn der Befehl az ssh vm fehlschlägt, verwenden Sie eine veraltete Version des Azure CLI-Clients.

Die Lösung ist das Aktualisieren des Azure CLI-Clients auf mindestens Version 2.21.0.

SSH-Verbindung wurde geschlossen

Nachdem sich ein Benutzer erfolgreich mit az login angemeldet hat, kann die Verbindung mit der VM über az ssh vm -ip <address> oder az ssh vm --name <vm_name> -g <resource_group> mit der Meldung „Verbindung von <ip_address> Port 22 geschlossen“ fehlschlagen.

Eine Ursache für diesen Fehler ist, dass der Benutzer nicht der Rolle „Anmeldeinformationen des VM-Administrators“ oder „Anmeldeinformationen für VM-Benutzer“ im Geltungsbereich dieser VM zugewiesen ist. In diesem Fall besteht die Lösung darin, den Benutzer einer der Azure RBAC-Rollen im Geltungsbereich dieser VM hinzuzufügen.

Dieser Fehler kann auch auftreten, wenn der Benutzer zwar über eine erforderliche Azure RBAC-Rolle verfügt, aber die systemseitig zugewiesene verwaltete Identität auf der VM deaktiviert wurde. Führen Sie in diesem Fall diese Aktionen aus:

  1. Aktivieren Sie die systemseitig zugewiesene verwaltete Identität auf der VM.
  2. Lassen Sie einige Minuten verstreichen, ehe der Benutzer versucht, sich mithilfe von az ssh vm --ip <ip_address> zu verbinden.

Verbindungsprobleme bei VM-Skalierungsgruppen

Bei VM-Verbindungen mit VM-Skalierungsgruppen können Fehler auftreten, wenn die Skalierungsgruppeninstanzen in einem alten Modell ausgeführt werden.

Durch ein Upgrade der Skalierungsgruppeninstanzen auf das neueste Modell kann das Problem möglicherweise behoben werden, insbesondere dann, wenn seit der Installation der Erweiterung für die Microsoft Entra-Anmeldung kein Upgrade erfolgt ist. Beim Upgrade einer Instanz wird eine Standardkonfiguration für Skalierungsgruppen auf die jeweilige Instanz angewendet.

Die Anweisungen „AllowGroups“ oder „DenyGroups“ in sshd_config führen dazu, dass die erste Anmeldung für Microsoft Entra-Benutzer fehlschlägt.

Wenn sshd_config entweder die Anweisung AllowGroups oder DenyGroups enthält, schlägt die erste Anmeldung bei Microsoft Entra-Benutzern fehl. Wenn die Anweisung hinzugefügt wurde, nachdem Benutzer sich bereits erfolgreich angemeldet haben, können sie sich anmelden.

Eine Lösung besteht darin, die Anweisungen AllowGroups und DenyGroups aus sshd_config zu entfernen.

Eine andere Lösung ist das Verschieben von AllowGroups und DenyGroups in den Abschnitt match user in sshd_config. Stellen Sie sicher, dass die Übereinstimmungsvorlage Microsoft Entra-Benutzer ausschließt.

„Zugriff verweigert“ wird beim Versuch, eine Verbindung von Azure Shell mit einer VM mit Linux Red Hat/Oracle 7.X herzustellen, angezeigt.

Die OpenSSH-Serverversion auf der Ziel-VM 7.4 ist zu alt. Die Version ist mit OpenSSH-Clientversion 8.8 nicht kompatibel. Weitere Informationen finden Sie unter RSA SHA256-Zertifikate funktionieren nicht mehr.

Problemumgehung:

  • Im Befehl az ssh vm wird die Option "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" hinzugefügt.
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Die Option "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" wird in /home/<user>/.ssh/config file hinzugefügt.

Fügen Sie der Clientkonfigurationsdatei "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" hinzu.

Host *
PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com

Nächste Schritte