Felsöka problem med SSH-anslutning på virtuella Azure Linux-datorer på grund av problem med behörighet och ägarskap
Gäller för: ✔️ Virtuella Linux-datorer
Kommentar
CentOS som refereras i den här artikeln är en Linux-distribution och kommer att nå End Of Life (EOL). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledning.
Den här artikeln innehåller lösningar på ett problem där det inte går att ansluta till en virtuell Linux-dator (VM) via Secure Shell (SSH) eftersom katalogen /var/empty/sshd i RHEL, katalogen /var/lib/empty i SUSE eller katalogen /var/run/sshd i Ubuntu inte finns eller att den inte ägs av rotanvändaren eller är grupp-skrivbar eller världsskrivningsbar.
Symptom
När du ansluter till en virtuell Linux-dator (VM) via SSH misslyckas anslutningen. Du kan få följande felmeddelande om den berörda katalogen, beroende på din Linux-distribution.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Orsak
Det här problemet kan uppstå om den berörda katalogen inte ägs av rotanvändaren eller om den är gruppskrivningsbar eller kan skrivas i världen.
Lös problemet genom att använda någon av följande lösningar:
Lösning 1: Reparera den virtuella datorn online
Här är två metoder för att reparera den virtuella datorn offline:
Använda seriekonsolen
Anslut till den virtuella datorns seriekonsol från Azure Portal.
Logga in på den virtuella datorn med hjälp av ett lokalt administrativt konto och motsvarande autentiseringsuppgifter eller lösenord.
Kör följande kommandon för att lösa problemet med behörigheter eller ägande:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Använda tillägget "Kör kommando"
Kommentar
Den här metoden förlitar sig på Vm-agenten för Azure Linux (waagent). Kontrollera därför att agenten är installerad på den virtuella datorn och att dess tjänst körs.
I Azure Portal öppnar du fönstret Egenskaper för den virtuella datorn för att kontrollera agentstatusen. Om agenten är aktiverad och har statusen Klar följer du dessa steg för att ändra behörigheten:
Gå till Azure Portal, leta upp dina vm-inställningar och välj sedan Kör kommando under Åtgärder.
Kör följande gränssnittsskript genom att välja RunShellScript>Run:
#!/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
- När skriptkörningen är klar visar utdatakonsolfönstret meddelandet "Aktivera lyckades".
Om du kan ansluta till den virtuella datorn via SSH och vill analysera information om körningen av Körningskommandoskriptet undersöker du filen handler.log i katalogen /var/log/azure/run-command .
Lösning 2: Reparera den virtuella datorn offline
Kommentar
- Använd den här lösningen om den virtuella datorns seriekonsolåtkomst inte är tillgänglig och waagenten inte är redo.
- I Ubuntu körs katalogen /var/run/sshd i minnet. Om du startar om den virtuella datorn åtgärdas också problemet. Därför är offlinefelsökning på virtuella Ubuntu-datorer inte nödvändigt.
Här är två metoder för att reparera den virtuella datorn offline:
Använda Azure Linux Auto Repair (ALAR)
ALAR-skript (Azure Linux Auto Repair) är en del av reparationstillägget för virtuella datorer som beskrivs i Reparera en virtuell Linux-dator med hjälp av reparationskommandona för Azure Virtual Machine.
Följ dessa steg för att automatisera den manuella offlineprocessen:
Kommentar
I följande steg ersätter du $RGNAME
värdena , $VMNAME
, $USERNAME
, $PASSWORD
och repairdiskcopy
därefter.
Använd kommandot az vm repair create för att skapa en virtuell reparationsdator. Den virtuella reparationsdatorn har en kopia av OS-disken för den problematiska virtuella datorn.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Logga in på den virtuella reparationsdatorn. Montera och chroot till filsystemet för den anslutna kopian av OS-disken. Följ de detaljerade chroot-instruktionerna.
Kör följande kommandon för att lösa problem med behörighet och ägarskap:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
När ändringarna har tillämpats kör du följande
az vm repair restore
kommando för att utföra ett automatiskt os-diskbyte med den ursprungliga virtuella datorn.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Använd den manuella metoden
Om både seriekonsolen och ALAR-metoden inte gäller för dig eller misslyckas måste reparationen utföras manuellt. Följ stegen nedan för att manuellt koppla OS-disken till en återställnings-VM och växla tillbaka OS-disken till den ursprungliga virtuella datorn:
- Koppla OS-disken till en virtuell återställningsdator med hjälp av Azure Portal.
- Koppla OS-disken till en virtuell återställningsdator med Hjälp av Azure CLI.
När OS-disken har anslutits till den virtuella återställningsdatorn följer du de detaljerade chroot-instruktionerna för att montera och chroot till filsystemen på den anslutna OS-disken. Följ sedan steg 3 i avsnittet Använd Azure Linux Auto Repair (ALAR) för att lösa problem med behörighet och ägarskap.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.