Freigeben über


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: Onlinereparatur des virtuellen Computers

Im Folgenden finden Sie zwei Methoden zum Offlinereparaturen des virtuellen Computers:

Verwenden der seriellen Konsole

  1. Stellen Sie von Azure-Portal aus eine Verbindung mit der seriellen Konsole des virtuellen Computers her.

  2. Melden Sie sich mit einem lokalen Administratorkonto und den entsprechenden Anmeldeinformationen oder Kennwörtern bei der VM an.

  3. 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:

  1. Wechseln Sie zum Azure-Portal, suchen Sie Ihre VM-Einstellungen, und wählen Sie dann befehl ausführen unter Vorgänge aus.

  2. 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
    

  1. 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 $RGNAMEin den folgenden Schritten die Werte , $VMNAME, $USERNAME, $PASSWORDund repairdiskcopy entsprechend.

  1. 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
    
  2. 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.

  3. 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
    
  4. 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:

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.