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.
Problembeschreibung
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 Sie den virtuellen Computer online.
- Lösung 2: Reparieren Sie den virtuellen Computer offline.
Lösung 1: Reparieren der VM online
Im Folgenden sind zwei Methoden zum Offlinereparieren des virtuellen Computers aufgeführt:
Verwenden der seriellen Konsole
Stellen Sie über Azure-Portal eine Verbindung mit der seriellen Konsole der VM her.
Melden Sie sich mit einem lokalen Administratorkonto und den entsprechenden Anmeldeinformationen oder kennwort bei der VM an.
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:
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>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 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:
Verwenden der Automatischen Reparatur von Azure Linux (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.
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
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.
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 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:
- 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.
Nachdem der Betriebssystemdatenträger erfolgreich an die Wiederherstellungs-VM angefügt wurde, folgen Sie den detaillierten Chroot-Anweisungen zum Bereitstellen und Chroot an die Dateisysteme des angefügten Betriebssystemdatenträgers. 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.