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
War dieser Artikel hilfreich? Ihre Eingabe ist uns wichtig. Bitte verwenden Sie die Schaltfläche "Feedback " auf dieser Seite, um uns mitzuteilen, wie gut dieser Artikel für Sie funktioniert 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-Anmeldeinformationen verwenden, muss dem Benutzer die Rolle "Administratoranmeldung für virtuelle Computer" oder "Benutzeranmeldung virtueller Computer" in der Ressourcengruppe zugewiesen werden, die die VM und die zugehörigen Ressourcen enthält. Andernfalls wird die Fehlermeldung „Berechtigung verweigert (publickey)“ angezeigt. Weitere Informationen finden Sie unter Konfigurieren von Rollenzuweisungen für den virtuellen Computer, der 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, SSH-Konfiguration oder Problembehandlung für den Status des SSH-Diensts 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 Sie "Befehl ausführen" über Azure-Portal – Sie können grundlegende Befehle ausführen, indem Sie die Funktion "Befehl ausführen" über die Azure-Portal verwenden. 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 Hilfeabschnitt , und wählen Sie "Kennwort zurücksetzen" aus, wie im folgenden Beispiel gezeigt:
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 aus.
Ü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
Verwenden Sie zum Überprüfen des Dienststatus den folgenden Befehl, der in den meisten aktuellen Linux-Distributionen verfügbar ist:
sudo systemctl status sshd.service
Sehen Sie sich das folgende Ausgabebeispiel an. Überprüfen Sie den Dienststatus aus der Zeile in der Active
Ausgabe. Die Ausgabe zeigt auch die Port- und IP-Adressen an, auf die lauscht wird.
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 zurückgibt, verwenden Sie andere verfügbare Befehle. Sie können den ss
Befehl entweder als Stamm oder über den sudo
Befehl verwenden, um zu überprüfen, ob der SSH-Dienst auf Ihrer VM ausgeführt wird.
Das folgende Beispiel zeigt, wie sie den ss
Befehl ausführen:sudo
sudo ss --listen --tcp --process --numeric | grep sshd
Notiz
Wir empfehlen den ss
Befehl, da der netstat
Befehl veraltet ist und nicht immer in modernen Verteilungen verfügbar ist.
Wenn keine Ausgabe erfolgt, ist SSH aktiv und wird ausgeführt. Sehen Sie sich das folgende 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 gekürzte Form der --listen --tcp --process –numeric
Argumente. Die Ausgabe zeigt, dass der SSHD-Prozess 829 sowohl auf IPv4- als auch auf IPv6-Adressen lauscht.
Überprüfen, auf welchem Port SSH ausgeführt wird
Die obige Befehlsausgabe zeigt, dass der SSHD-Prozess auf Port 22 lauscht. Wenn der SSHD-Prozess für die Ausführung auf einem anderen Port konfiguriert ist, wird der 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 mithilfe eines der folgenden Befehle:
grep -i port /etc/ssh/sshd_config
oder
grep -i listen /etc/ssh/sshd_config
Die Ausgabe sieht dann wie folgt aus:
Port 22
Jede Zeile, die mit #
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. Die Standardkonfiguration besteht darin, alle IP-Adressen auf dem System an Port 22 abzuhören.
Verwenden von Befehl ausführen über Azure-Portal
Wenn Sie Befehle nicht über die serielle Konsole ausführen können, z. B. wenn nur SSH-Schlüssel für die Authentifizierung verwendet werden, kann das Feature "Befehl ausführen" verwendet werden, um Befehle auszugeben und die Ausgabe anzuzeigen. Alle Befehle, die zuvor über die serielle Konsole ausgeführt wurden, können nicht interaktiv im Abschnitt "Befehl ausführen" im Azure-Portal ausgeführt werden. Die Ausgabe wird an die Azure-Portal zurückgegeben. Es ist nicht erforderlich, sudo
Befehle im Kontext "Befehl ausführen" 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-Zugriffserweiterung für Linux liest in einer JSON-Datei, die Aktionen definiert, die ausgeführt werden sollen. 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 einen virtuellen Computer mithilfe des Azure-Portal erneut bereitzustellen, wählen Sie Ihren virtuellen Computer aus, und scrollen Sie nach unten zum Hilfeabschnitt. 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.