Dela via


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

  1. Anslut till den virtuella datorns seriekonsol från Azure Portal.

  2. Logga in på den virtuella datorn med hjälp av ett lokalt administrativt konto och motsvarande autentiseringsuppgifter eller lösenord.

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

  1. Gå till Azure Portal, leta upp dina vm-inställningar och välj sedan Kör kommando under Åtgärder.

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

  1. 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 $RGNAMEvärdena , $VMNAME, $USERNAME, $PASSWORDoch repairdiskcopy därefter.

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

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

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.