Freigeben über


Behandeln von SSH-Verbindungsproblemen auf Azure Linux-VMs aufgrund von Berechtigungs- und Eigentumsproblemen

Gilt für: ✔️ Linux-VMs

Notiz

CentOS, auf das in diesem Artikel verwiesen wird, ist eine Linux-Verteilung und wird End Of Life (EOL) erreichen. Sie sollten sich Ihre Nutzung dieser Distribution ansehen und entsprechend planen. Weitere Informationen finden Sie unter CentOS End Of Life Guidance.

Dieser Artikel enthält Lösungen für ein Problem, bei dem eine Verbindung mit einem virtuellen Linux-Computer (VM) über Secure Shell (SSH) fehlschlägt, da 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 dem Stammbenutzer gehört, oder es ist beschreibbar oder weltschreibbar.

Symptome

Wenn Sie eine Verbindung mit einem virtuellen Linux-Computer (VM) über SSH herstellen, schlägt die Verbindung fehl. Je nach Linux-Verteilung erhalten Sie möglicherweise die folgende Fehlermeldung über das betroffene 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 das betroffene Verzeichnis nicht dem Stammbenutzer gehört, oder wenn es beschreibbar oder weltschreibbar ist.

Verwenden Sie eine der folgenden Lösungen, um dieses Problem zu beheben:

Lösung 1: Reparieren der VM online

Im Folgenden sind zwei Methoden zum Offlinereparieren des virtuellen Computers aufgeführt:

Verwenden der seriellen Konsole

  1. Stellen Sie über Azure-Portal eine Verbindung mit der seriellen Konsole der VM her.

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

  3. Führen Sie die folgenden Befehle aus, um das Berechtigungs- und Eigentumsproblem zu auszulösen:

    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"

Notiz

Diese Methode basiert auf dem Azure Linux VM Agent (waagent). Stellen Sie daher sicher, dass der Agent auf dem virtuellen Computer installiert ist und dass der Dienst ausgeführt wird.

Öffnen Sie im Azure-Portal das Fenster "Eigenschaften" der VM, um den Agentstatus zu überprüfen. Wenn der Agent aktiviert ist und über den Status "Bereit " 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>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 zeigt das Ausgabekonsolenfenster eine Meldung "Erfolgreich aktivieren" an.

Wenn Sie über SSH eine Verbindung mit dem virtuellen Computer herstellen können und die Details der Ausführung des Run-Command-Skripts analysieren möchten, überprüfen Sie die handler.log Datei im Verzeichnis "/var/log/azure/run-command" .

Lösung 2: Reparieren des virtuellen Computers offline

Notiz

  • Verwenden Sie diese Auflösung, wenn der serielle Konsolenzugriff auf den virtuellen Computer nicht verfügbar ist und der Waagent nicht bereit ist.
  • In Ubuntu wird das Verzeichnis "/var/run/sshd " im Arbeitsspeicher ausgeführt. Durch den Neustart des virtuellen Computers wird auch das Problem behoben. Daher ist die Offline-Problembehandlung in Ubuntu-VMs nicht erforderlich.

Im Folgenden sind zwei Methoden zum Offlinereparieren des virtuellen Computers aufgeführt:

Verwendung von Azure Linux Auto Repair (ALAR)

Azure Linux Auto Repair (ALAR)-Skripts sind Teil der VM-Reparaturerweiterung, die unter "Reparieren einer Linux-VM" beschrieben wird, indem Sie die Reparaturbefehle des virtuellen Azure-Computers verwenden.

Führen Sie die folgenden Schritte aus, um den manuellen Offlineprozess zu automatisieren:

Notiz

Ersetzen Sie in den folgenden Schritten die Werte , $RGNAME, , $PASSWORD$VMNAME$USERNAME, und repairdiskcopy werte entsprechend.

  1. Verwenden Sie den Befehl zum Erstellen der Az-VM-Reparatur, um eine Reparatur-VM zu erstellen. Die Reparatur-VM verfügt über eine Kopie des Betriebssystemdatenträgers für den problematischen virtuellen Computer, der angefügt ist.

    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. Bereitstellen und Chroot an das Dateisystem der angefügten Kopie des Betriebssystemdatenträgers. Folgen Sie den detaillierten 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 auszuführen.

    az vm repair restore --verbose -g $RGNAME -n $VMNAME
    

Verwenden der manuellen Methode

Wenn die serielle Konsole und 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 an die ursprüngliche 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. Befolgen Sie dann Schritt 3 im Abschnitt "Azure Linux Auto Repair (ALAR) ", 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.