Freigeben über


Beheben von PROBLEMEN bei der SSH-Verbindung in Azure Linux-VM aufgrund von Berechtigungs- und Besitzproblemen

Gilt für: ✔️ Linux-VMs

Zusammenfassung

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.

Von Bedeutung

Neu! Probieren Sie VM-Unterstützung aus, um die wichtigsten Probleme zu beheben. Es wird empfohlen, VM-Hilfsprogramm für Windows oder VM-Hilfsprogramm für Linux auszuführen. Diese skriptbasierten Diagnosetools helfen Ihnen, häufige Probleme zu identifizieren, die sich auf den Azure VM-Gast-Agent und die allgemeine VM-Integrität auswirken.

Wenn Leistungsprobleme auf virtuellen Computern auftreten, führen Sie diese Tools zuerst aus, bevor Sie sich an Microsoft-Support wenden.

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 Root-Benutzer gehört oder wenn es gruppenbeschreibbar oder weltbeschreibbar 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 eine Verbindung mit der seriellen Konsole des virtuellen Computers über Azure Portal 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 beheben:

    sudo mkdir -p /var/empty/sshd
    sudo chmod 755 /var/empty/sshd
    sudo chown root:root /var/empty/sshd
    

Verwenden Sie die Erweiterung "Befehl ausführen"

Hinweis

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 Properties des virtuellen Computers, 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 Run Command unter Operations aus.

  2. Führen Sie das folgende Shellskript aus, indem Sie "RunShellScript" und anschließend "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

Hinweis

  • 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:

Verwenden Sie az vm repair

Der az vm repair, Teil der VM-Repair-Erweiterung für die Azure CLI, wird in Reparatur einer Linux-VM mithilfe der Azure Virtual Machine-Reparaturbefehle beschrieben.

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

Hinweis

Ersetzen Sie in den folgenden Schritten die Werte $RGNAME, $VMNAME, $USERNAME, $PASSWORD und 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, 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 weder die serielle Konsole noch die az vm repair-Methode für Sie geeignet sind 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 die OS-Disk erfolgreich an die Wiederherstellungs-VM angeschlossen ist, folgen Sie den detaillierten Chroot-Anweisungen, um die Dateisysteme der angeschlossenen OS-Disk einzuhängen und den chroot-Befehl auszuführen. Befolgen Sie dann Schritt 3 im Abschnitt "Az vm Repair ", um die Berechtigungs- und Besitzprobleme zu beheben.