Behandeln von SSH-Verbindungsproblemen auf virtuellen Azure Linux-Computern aufgrund von Berechtigungs- und Besitzproblemen
Hinweis
CentOS, auf das in diesem Artikel verwiesen wird, ist eine Linux-Distribution und erreicht das Ende der Lebensdauer (End Of Life, EOL). Berücksichtigen Sie Ihre Verwendung, und planen Sie sie entsprechend. Weitere Informationen finden Sie unter Leitfaden zum Ende der Lebensdauer von CentOS.
Dieser Artikel bietet Lösungen für ein Problem, bei dem beim Herstellen einer Verbindung mit einem virtuellen Linux-Computer (VM) über Secure Shell (SSH) ein Fehler auftritt, weil das Verzeichnis /var/empty/sshd in RHEL, das Verzeichnis /var/lib/empty in SUSE oder das Verzeichnis /var/run/sshd in Ubuntu nicht vorhanden ist oder nicht im Besitz des Stammbenutzers ist, oder es ist beschreibbar oder weltbeschreibbar.
Problembeschreibung
Wenn Sie über SSH eine Verbindung mit einem virtuellen Linux-Computer (VM) herstellen, schlägt die Verbindung fehl. Abhängig von Ihrer Linux-Distribution erhalten Sie möglicherweise die folgende Fehlermeldung zu dem betroffenen Verzeichnis.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Ursache
Dieses Problem kann auftreten, wenn sich das betroffene Verzeichnis nicht im Besitz des Stammbenutzers befindet, oder wenn es von einer Gruppe beschreibbar oder weltbeschreibbar ist.
Verwenden Sie eine der folgenden Lösungen, um dieses Problem zu beheben:
- Lösung 1: Reparieren Sie den virtuellen Computer online.
- Lösung 2: Reparieren Sie den virtuellen Computer offline.
Lösung 1: Onlinereparatur des virtuellen Computers
Im Folgenden finden Sie zwei Methoden zum Offlinereparaturen des virtuellen Computers:
Verwenden der seriellen Konsole
Stellen Sie von Azure-Portal aus eine Verbindung mit der seriellen Konsole des virtuellen Computers her.
Melden Sie sich mit einem lokalen Administratorkonto und den entsprechenden Anmeldeinformationen oder Kennwörtern bei der VM an.
Führen Sie die folgenden Befehle aus, um das Berechtigungs- und Besitzproblem zu beheben:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Verwenden der Erweiterung "Befehl ausführen"
Hinweis
Diese Methode basiert auf dem Azure Linux-VM-Agent (waagent). Stellen Sie daher sicher, dass der Agent auf der VM installiert ist und der Dienst ausgeführt wird.
Öffnen Sie im Azure-Portal das Fenster Eigenschaften des virtuellen Computers, um die Agent-status zu überprüfen. Wenn der Agent aktiviert ist und über die bereitschaftsbereite status verfügt, führen Sie die folgenden Schritte aus, um die Berechtigung zu ändern:
Wechseln Sie zum Azure-Portal, suchen Sie Ihre VM-Einstellungen, und wählen Sie dann befehl ausführen unter Vorgänge aus.
Führen Sie das folgende Shellskript aus, indem Sie RunShellScript> Run (Ausführen)auswählen:
#!/bin/bash #Script to change permissions on a file mkdir -p /var/empty/sshd;chmod 755 /var/empty/sshd;chown root:root /var/empty/sshd
- Nach Abschluss der Skriptausführung wird im Ausgabekonsolenfenster die Meldung "Erfolgreich aktivieren" angezeigt.
Wenn Sie über SSH eine Verbindung mit dem virtuellen Computer herstellen können und die Details der Ausführung des Skripts "Run-command" analysieren möchten, überprüfen Sie die handler.log Datei im Verzeichnis /var/log/azure/run-command .
Lösung 2: Offlinereparatur des virtuellen Computers
Hinweis
- Verwenden Sie diese Auflösung, wenn der Zugriff auf die serielle VM-Konsole nicht verfügbar ist und waagent nicht bereit ist.
- Unter Ubuntu wird das Verzeichnis /var/run/sshd im Arbeitsspeicher ausgeführt. Durch einen Neustart der VM wird das Problem ebenfalls behoben. Daher ist die Offline-Problembehandlung auf Ubuntu-VMs nicht erforderlich.
Im Folgenden finden Sie zwei Methoden zum Offlinereparaturen des virtuellen Computers:
Verwenden von Azure Linux Auto Repair (ALAR)
Azure Linux Auto Repair-Skripts (ALAR) sind Teil der VM-Reparaturerweiterung, die unter Reparieren einer Linux-VM mithilfe der Reparaturbefehle für virtuelle Azure-Computer beschrieben wird.
Führen Sie die folgenden Schritte aus, um den manuellen Offlineprozess zu automatisieren:
Hinweis
Ersetzen Sie $RGNAME
in den folgenden Schritten die Werte , $VMNAME
, $USERNAME
, $PASSWORD
und repairdiskcopy
entsprechend.
Verwenden Sie den Befehl az vm repair create , um eine Reparatur-VM zu erstellen. Die Reparatur-VM verfügt über eine Kopie des Betriebssystemdatenträgers für den problematischen virtuellen Computer.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Melden Sie sich bei der Reparatur-VM an. Binden Sie und chroot in das Dateisystem der angefügten Kopie des Betriebssystemdatenträgers ein. Befolgen Sie die ausführlichen Chroot-Anweisungen.
Führen Sie die folgenden Befehle aus, um die Berechtigungs- und Besitzprobleme zu beheben:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
Nachdem die Änderungen angewendet wurden, führen Sie den folgenden
az vm repair restore
Befehl aus, um einen automatischen Austausch des Betriebssystemdatenträgers mit der ursprünglichen VM durchzuführen.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Verwenden der manuellen Methode
Wenn sowohl die serielle Konsole als auch der ALAR-Ansatz nicht für Sie gelten oder fehlschlagen, muss die Reparatur manuell ausgeführt werden. Führen Sie die folgenden Schritte aus, um den Betriebssystemdatenträger manuell an eine Wiederherstellungs-VM anzufügen und den Betriebssystemdatenträger wieder mit der ursprünglichen VM zu tauschen:
- Fügen Sie den Betriebssystemdatenträger mithilfe des Azure-Portal an eine Wiederherstellungs-VM an.
- Fügen Sie den Betriebssystemdatenträger mithilfe der Azure CLI an eine Wiederherstellungs-VM an.
Sobald der Betriebssystemdatenträger erfolgreich an die Wiederherstellungs-VM angeschlossen ist, folgen Sie den detaillierten Chroot-Anweisungen, um die Dateisysteme des angeschlossenen Betriebssystemlaufwerks einzuhängen und zu chrooten. Führen Sie dann Schritt 3 im Abschnitt Verwenden der automatischen Reparatur von Azure Linux (ALAR) aus, um die Berechtigungs- und Besitzprobleme zu beheben.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für