Freigeben über


Behandeln von Problemen, Fehlern oder Ablehnungen im Zusammenhang mit der SSH-Verbindung mit einem virtuellen Azure Linux-Computer

Gilt für: ✔️ Linux-VMs

Dieser Artikel hilft Ihnen dabei, Probleme zu suchen und zu beheben, die aufgrund von SSH-Fehlern (Secure Shell), SSH-Verbindungsfehlern oder der Ablehnung einer SSH-Verbindung, wenn Sie versuchen, eine Verbindung mit einem virtuellen Linux-Computer herzustellen, auftreten. Sie können das Azure-Portal, die Azure-Befehlszeilenschnittstelle oder die VM-Zugriffserweiterung für Linux verwenden, um Verbindungsproblemen zu ermitteln und zu beheben.

Notiz

Waren diese Informationen hilfreich? Wir schätzen Ihr Feedback. Bitte verwenden Sie die Schaltfläche Feedback auf dieser Seite, um uns mitzuteilen, wie gut Ihnen dieser Artikel gefallen hat oder wie wir ihn verbessern können.

Schritte zur schnellen Problembehandlung

Versuchen Sie nach jedem Problembehandlungsschritt, die Verbindung mit dem virtuellen Computer erneut herzustellen.

  1. Setzen Sie die SSH-Konfiguration zurück.
  2. Setzen Sie die Anmeldeinformationen für den Benutzer zurück.
  3. Überprüfen Sie, ob die Regeln der Netzwerksicherheitsgruppe SSH-Verkehr und Rollenzuweisungen zulassen.
    • Stellen Sie sicher, dass eine Netzwerksicherheitsgruppen-Regel vorhanden ist, die SSH-Datenverkehr zulässt (standardmäßig über TCP-Port 22).
    • Sie können die Portweiterleitung/-zuordnung nicht ohne Azure-Lastenausgleich verwenden.
    • Wenn Sie Microsoft Entra ID zum Verwalten von SSH-Anmeldungen verwenden, muss dem Benutzer die Rolle VM-Administratoranmeldung oder VM-Benutzeranmeldung in der Ressourcengruppe zugewiesen werden, die die VM und die damit verbundenen Ressourcen enthält. Andernfalls wird die Fehlermeldung „Berechtigung verweigert (publickey)“ angezeigt. Weitere Informationen finden Sie unter Konfigurieren von Rollenzuweisungen für die VM, die Microsoft Entra-Anmeldung verwendet.
  4. Überprüfen Sie die Ressourcenintegrität des virtuellen Computers.
    • Stellen Sie sicher, dass der virtuelle Computer als fehlerfrei gemeldet wird.
    • Wenn Sie die Startdiagnose aktiviert haben, stellen Sie sicher, dass der virtuelle Computer in den Protokollen keine Startfehler meldet.
  5. Starten Sie den virtuellen Computer neu.
  6. Stellen Sie den virtuellen Computer erneut bereit.

Lesen Sie weiter, falls Sie ausführlichere Schritte und Erläuterungen zur Problembehandlung benötigen.

Verfügbare Methoden zum Beheben von SSH-Verbindungsproblemen

Sie können Anmeldeinformationen, die SSH-Konfiguration oder den Status des SSH-Dienstes mithilfe einer der folgenden Methoden zurücksetzen:

  • Azure-Portal: Ermöglicht das schnelle Zurücksetzen der SSH-Konfiguration oder des SSH-Schlüssels, falls die Azure-Tools nicht installiert sind.
  • Serielle Konsole für virtuelle Azure-Computer: Die serielle Konsole für virtuelle Computer funktioniert unabhängig von der SSH-Konfiguration. Sie erhalten hierbei eine interaktive Konsole für Ihre VM. Die serielle Konsole wurde speziell für Fälle entwickelt, in denen keine SSH-Verbindung hergestellt werden kann. Unten sind weitere Details hierzu angegeben.
  • Verwenden von „Befehl ausführen“ über das Azure-Portal – Sie können grundlegende Befehle mithilfe der Funktionalität „Befehl ausführen“ über das Azure-Portal ausführen. Die Ausgabe wird an das Portal zurückgegeben.
  • Azure CLI: Wenn Sie bereits eine Befehlszeile geöffnet haben, können Sie die SSH-Konfiguration oder Anmeldeinformationen schnell zurücksetzen.
  • VMAccessForLinux-Erweiterung in Azure: Erstellen und verwenden Sie JSON-Definitionsdateien wieder, um die SSH-Konfiguration oder Benutzeranmeldeinformationen zurückzusetzen.

Versuchen Sie nach jedem Problembehandlungsschritt, die Verbindung mit dem virtuellen Computer erneut herzustellen. Sollte sich immer noch keine Verbindung herstellen lassen, versuchen Sie es mit dem nächsten Schritt.

Verwenden des Azure-Portals

Das Azure-Portal bietet eine schnelle Möglichkeit, die SSH-Konfiguration oder Benutzeranmeldeinformationen zurücksetzen, ohne dafür Tools auf dem lokalen Computer installieren zu müssen.

Wählen Sie als Erstes im Azure-Portal Ihren virtuellen Computer aus. Scrollen Sie nach unten zum Abschnitt Hilfe, und wählen Sie Passwort zurücksetzen wie im folgenden Beispiel aus:

Screenshot zum Zurücksetzen der SSH-Konfiguration oder der Anmeldeinformationen im Azure-Portal.

Zurücksetzen der SSH-Konfiguration

Um die SSH-Konfiguration zurückzusetzen, wählen Sie Reset configuration only im Abschnitt Modus aus, wie im obigen Screenshot dargestellt, und wählen Sie dann Aktualisieren aus. Nachdem die Aktion abgeschlossen ist, versuchen Sie erneut, auf Ihren virtuellen Computer zuzugreifen.

Zurücksetzen von SSH-Anmeldeinformationen für einen Benutzer

Um die Anmeldeinformationen eines vorhandenen Benutzers zurückzusetzen, wählen Sie Reset SSH public key oder Reset password im Bereich Modus aus, wie im vorherigen Screenshot dargestellt. Geben Sie den Benutzernamen und einen SSH-Schlüssel oder ein neues Kennwort an, und wählen Sie dann Aktualisieren.

Über dieses Menü können Sie auch einen Benutzer mit sudo-Berechtigungen auf dem virtuellen Computer erstellen. Geben Sie einen neuen Benutzernamen und ein zugehöriges Kennwort oder einen SSH-Schlüssel ein, und wählen Sie dann Aktualisieren aus.

Überprüfen von Sicherheitsregeln

Verwenden Sie den Ansatz Überprüfen des IP-Flusses, um zu bestätigen, dass eine Regel in einer Netzwerksicherheitsgruppe den Datenverkehr an einen oder von einem virtuellen Computer blockiert. Sie können auch die aktiven Sicherheitsgruppenregeln überprüfen, um sicherzustellen, dass die NSG-Regel „Zulassen“ für eingehende Verbindungen vorhanden ist und für den SSH-Port (standardmäßig 22) Priorität hat. Weitere Informationen finden Sie unter Problembehandlung bei Netzwerksicherheitsgruppen über das Azure-Portal.

Überprüfen des Routings

Vergewissern Sie sich mit der Funktion Nächster Hop von Network Watcher, dass eine Route nicht das Weiterleiten des Datenverkehrs an einen bzw. von einem virtuellen Computer verhindert. Sie können auch die effektiven Routen überprüfen, um alle effektiven Routen für eine Netzwerkschnittstelle anzuzeigen. Weitere Informationen finden Sie unter Problembehandlung bei Routen über das Azure-Portal.

Verwenden der seriellen Konsole für virtuelle Azure-Computer

Die serielle Konsole für virtuelle Azure-Computer ermöglicht den Zugriff auf eine textbasierte Konsole für virtuelle Linux-Computer. Sie können die Konsole zum Beheben von Problemen mit Ihrer SSH-Verbindung in einer interaktiven Shell verwenden. Stellen Sie sicher, dass Sie die Voraussetzungen zur Verwendung der seriellen Konsole erfüllt haben, und probieren Sie die unten angegebenen Befehle aus, um die Problembehandlung für Ihre SSH-Verbindung durchzuführen.

Überprüfen, ob der SSH-Dienst ausgeführt wird

Um den Dienststatus zu überprüfen, verwenden Sie den folgenden Befehl, der in den meisten aktuellen Linux-Distributionen verfügbar ist:

sudo systemctl status sshd.service

Sehen Sie sich folgendes Ausgabebeispiel an: Prüfen Sie den Servicestatus in Zeile Active in der Ausgabe. Die Ausgabe zeigt auch den Port und die IP-Adressen an, die abgehört werden.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

Wenn dieser Befehl nicht verfügbar ist oder unerwartete Ergebnisse liefert, verwenden Sie andere verfügbare Befehle. Sie können den Befehl ss entweder als „root“ oder über den Befehl sudo verwenden, um zu überprüfen, ob der SSH-Dienst auf Ihrer VM ausgeführt wird.

Das folgende Beispiel zeigt, wie Sie den Befehl ss über sudo ausführen:

sudo ss --listen --tcp --process --numeric | grep sshd

Notiz

Wir empfehlen den Befehl ss, da der Befehl netstat veraltet und in modernen Distributionen nicht immer verfügbar ist.

Wenn keine Ausgabe erfolgt, ist SSH aktiv und wird ausgeführt. Sehen Sie sich folgendes Ausgabebeispiel an:

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn ist die verkürzte Form der Argumente von --listen --tcp --process –numeric. Die Ausgabe zeigt, dass der SSHD-Prozess 829 sowohl IPv4- als auch IPv6-Adressen abhört.

Überprüfen, auf welchem Port SSH ausgeführt wird

Die obige Befehlsausgabe zeigt, dass der SSHD-Prozess auf Port 22 hört. Wenn der SSHD-Prozess so konfiguriert ist, dass er auf einem anderen Port ausgeführt wird, wird dieser Port in der Ausgabe angezeigt. Um zu überprüfen, ob die Änderung in der Standardkonfigurationsdatei vorgenommen wurde, überprüfen Sie die Standardkonfigurationsdatei /etc/ssh/sshd_config mit einem der folgenden Befehle:

grep -i port /etc/ssh/sshd_config

or

grep -i listen /etc/ssh/sshd_config

Die Ausgabe sieht dann wie folgt aus:

Port 22

Jede Zeile, die mit # in der Ausgabe beginnt, ist ein Kommentar und kann sicher ignoriert werden. Wenn nichts zurückgegeben wird oder die Zeilen Kommentare sind, wird die Standardkonfiguration verwendet. Standardmäßig werden alle IP-Adressen auf dem System auf Port 22 abgehört.

Verwenden von „Befehl ausführen“ über das Azure-Portal

Wenn Sie keine Befehle über die serielle Konsole ausführen können, z. B. wenn nur SSH-Schlüssel zur Authentifizierung verwendet werden, kann die Funktion „Befehl ausführen“ verwendet werden, um Befehle auszuführen und die Ausgabe anzuzeigen. Alle Befehle, die zuvor über die serielle Konsole ausgeführt wurden, können im Abschnitt „Befehl ausführen“ im Azure-Portal nicht-interaktiv ausgeführt werden. Die Ausgabe wird an das Azure-Portal zurückgegeben. Es ist im Kontext von „Befehl ausführen“ nicht erforderlich, Befehle mit sudo auszuführen.

Verwenden der Azure CLI

Wenn nicht bereits geschehen, installieren Sie die neueste Version der Azure-Befehlszeilenschnittstelle, und melden Sie sich mit az login bei einem Azure-Konto an.

Wenn Sie ein benutzerdefiniertes Linux-Datenträgerimage erstellt und hochgeladen haben, stellen Sie sicher, dass Microsoft Azure Linux Agent Version 2.0.5 oder höher installiert ist. Bei virtuellen Computern, die über Images aus dem Katalog erstellt wurde, ist diese Zugriffserweiterung bereits installiert und konfiguriert.

Zurücksetzen der SSH-Konfiguration

Sie können zunächst versuchen, die SSH-Konfiguration auf die Standardwerte zurückzusetzen und den SSH-Server auf der VM neu zu starten. Hierdurch werden der Name, das Kennwort und die SSH-Schlüssel des Benutzerkontos nicht geändert. Im folgenden Beispiel wird mithilfe von az vm user reset-ssh die SSH-Konfiguration auf der VM mit dem Namen myVM in myResourceGroup zurückgesetzt. Verwenden Sie Ihre eigenen Werte wie folgt:

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

Zurücksetzen von SSH-Anmeldeinformationen für einen Benutzer

Im folgenden Beispiel werden mithilfe von az vm user update die Anmeldeinformationen für myUsername auf den in myPassword angegebenen Wert zurückgesetzt, der auf der VM myVM in myResourceGroup angegeben ist. Verwenden Sie Ihre eigenen Werte wie folgt:

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

Wenn Sie die SSH-Schlüsselauthentifizierung verwenden, können Sie den SSH-Schlüssel für einen bestimmten Benutzer zurücksetzen. Das folgende Beispiel aktualisiert mithilfe von az vm access set-linux-user auf dem virtuellen Computer myVM in myResourceGroup den in ~/.ssh/id_rsa.pub gespeicherten SSH-Schlüssel für den Benutzer myUsername. Verwenden Sie Ihre eigenen Werte wie folgt:

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

Verwenden der Erweiterung VMAccess

Die VM Access Extension für Linux liest eine JSON-Datei ein, in der die auszuführenden Aktionen definiert sind. Diese Aktionen umfassen das Zurücksetzen von SSHD, das Zurücksetzen eines SSH-Schlüssels oder das Hinzufügen eines Benutzers. Sie verwenden weiterhin die Azure-Befehlszeilenschnittstelle, um die VM-Zugriffserweiterung aufzurufen, aber Sie können die JSON-Dateien bei Bedarf VM-übergreifend wiederverwenden. Auf diese Weise können Sie ein Repository mit JSON-Dateien erstellen, die für verschiedene Szenarien aufgerufen werden können.

Zurücksetzen von SSHD

Erstellen Sie eine Datei namens settings.json mit folgendem Inhalt:

{
    "reset_ssh":True
}

Rufen Sie dann über die Azure-Befehlszeilenschnittstelle die VMAccessForLinux-Erweiterung auf, und geben Sie die entsprechende JSON-Datei an, um Ihre SSHD-Verbindung zurückzusetzen. Im folgenden Beispiel wird mithilfe von az vm extension set die SSHD auf der VM mit dem Namen myVM in myResourceGroup zurückgesetzt. Verwenden Sie Ihre eigenen Werte wie folgt:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Zurücksetzen von SSH-Anmeldeinformationen für einen Benutzer

Wenn SSHD ordnungsgemäß funktioniert, können Sie die Anmeldeinformationen für einen bestimmten Benutzer zurücksetzen. Um das Kennwort für einen Benutzer zurückzusetzen, erstellen Sie eine Datei namens settings.json. Das folgende Beispiel setzt die Anmeldeinformationen für myUsername auf den in myPassword angegebenen Wert zurück. Geben Sie folgende Zeilen in Ihre settings.json-Datei ein, und verwenden Sie dabei Ihre eigenen Werte:

{
    "username":"myUsername", "password":"myPassword"
}

Um den SSH-Schlüssel für einen Benutzer zurückzusetzen, erstellen Sie zuerst eine Datei namens settings.json. Das folgende Beispiel setzt auf dem virtuellen Computer myVM in myResourceGroup die Anmeldeinformationen für den Benutzer myUsername auf den in myPassword angegebenen Wert zurück. Geben Sie folgende Zeilen in Ihre settings.json-Datei ein, und verwenden Sie dabei Ihre eigenen Werte:

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

Nachdem Sie die JSON-Datei erstellt haben, verwenden Sie die Azure-Befehlszeilenschnittstelle, um die VMAccessForLinux-Erweiterung aufzurufen, mit der Sie unter Angabe der JSON-Datei die SSH-Benutzeranmeldeinformationen zurücksetzen können. Das folgende Beispiel setzt Anmeldeinformationen auf dem virtuellen Computer mit dem Namen myVM in myResourceGroup zurück. Verwenden Sie Ihre eigenen Werte wie folgt:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Zurücksetzen der SSH-Konfiguration

Die SSHD-Konfiguration selbst kann fehlerhaft sein, oder beim Dienst ist ein Fehler aufgetreten. Sie können SSHD zurücksetzen, um sicherzustellen, dass die SSH-Konfiguration gültig ist. Das Zurücksetzen von SSHD sollte der erste Schritt bei der Problembehandlung sein.

Das folgende Beispiel setzt SSHD auf einem virtuellen Computer mit dem Namen myVM in der Ressourcengruppe myResourceGroup zurück. Verwenden Sie folgendermaßen Ihre eigenen Namen für den virtuellen Computer und die Ressourcengruppe:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

Zurücksetzen von SSH-Anmeldeinformationen für einen Benutzer

Wenn SSHD ordnungsgemäß funktioniert, können Sie das Kennwort für einen bestimmten Benutzer zurücksetzen. Das folgende Beispiel setzt auf dem virtuellen Computer myVM in myResourceGroup die Anmeldeinformationen für den Benutzer myUsername auf den in myPassword angegebenen Wert zurück. Verwenden Sie Ihre eigenen Werte wie folgt:

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

Wenn Sie die SSH-Schlüsselauthentifizierung verwenden, können Sie den SSH-Schlüssel für einen bestimmten Benutzer zurücksetzen. Das folgende Beispiel aktualisiert den in ~/.ssh/id_rsa.pub gespeicherten SSH-Schlüssel für den Benutzer namens myUsername auf dem virtuellen Computer myVM in myResourceGroup. Verwenden Sie Ihre eigenen Werte wie folgt:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

Neustarten eines virtuellen Computers

Wenn Sie die SSH-Konfiguration und Benutzeranmeldeinformationen zurückgesetzt haben oder dabei ein Fehler aufgetreten ist, können Sie den virtuellen Computer neu starten, um zugrunde liegende Computeprobleme zu beheben.

Azure-Portal

Um einen virtuellen Computer über das Azure-Portal neu zu starten, wählen Sie den virtuellen Computer aus. Wählen Sie dann Neu starten aus, wie im folgenden Beispiel gezeigt:

Screenshot zum Neustarten eines virtuellen Computers im Azure-Portal.

Azure CLI

Im folgenden Beispiel wird mit az vm restart der virtuelle Computer myVM in der Ressourcengruppe myResourceGroup neu gestartet. Verwenden Sie Ihre eigenen Werte wie folgt:

az vm restart --resource-group myResourceGroup --name myVM

Erneutes Bereitstellen eines virtuellen Computers

Sie können einen virtuellen Computer in Azure auf einem anderen Knoten erneut bereitstellen und dadurch möglicherweise zugrunde liegende Netzwerkprobleme beheben. Informationen zum erneuten Bereitstellen eines virtuellen Computers finden Sie unter Einen virtuellen Computer in einem neuen Azure-Knoten erneut bereitstellen.

Notiz

Nach Beendigung dieses Vorgangs gehen kurzlebige Datenträgerdaten verloren, und dynamische IP-Adressen, die dem virtuellen Computer zugeordnet sind, werden aktualisiert.

Azure-Portal

Um eine VM über das Azure-Portal erneut bereitzustellen, wählen Sie die VM aus, und scrollen Sie nach unten zum Abschnitt Hilfe. Wählen Sie Erneut bereitstellen aus, wie im folgenden Beispiel gezeigt:

Screenshot zum erneuten Bereitstellen eines virtuellen Computers im Azure-Portal.

Azure CLI

Im folgenden Beispiel wird mit az vm redeploy die Bereitstellung des virtuellen Computers myVM in der Ressourcengruppe myResourceGroup erneuert. Verwenden Sie Ihre eigenen Werte wie folgt:

az vm redeploy --resource-group myResourceGroup --name myVM

Zusätzliche Ressourcen

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.