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.
- Setzen Sie die SSH-Konfiguration zurück.
- Setzen Sie die Anmeldeinformationen für den Benutzer zurück.
- Ü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.
- Ü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.
- Starten Sie den virtuellen Computer neu.
- 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:
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:
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:
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
- Wenn Sie nach Ausführung der Schritte immer noch nicht keine SSH-Verbindung mit Ihrem virtuellen Computer herstellen können, finden Sie unter Ausführliche Schritte zur Problembehandlung bei SSH weitere Hinweise, damit Sie das Problem lösen können.
- Weitere Informationen zur Problembehandlung beim Anwendungszugriff finden Sie unter Problembehandlung beim Zugriff auf eine Anwendung, die auf einem virtuellen Azure-Computer ausgeführt wird.
- Weitere Informationen zur Problembehandlung bei virtuellen Computern, die mit dem klassischen Bereitstellungsmodell erstellt wurden, finden Sie unter Zurücksetzen eines Kennworts oder eines SSH-Schlüssels für Linux-basierte virtuelle Computer.
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.