Problemen met SSH-verbindingen in azure Linux-VM oplossen vanwege problemen met machtigingen en eigendom
Van toepassing op: ✔️ Virtuele Linux-machines
Notitie
CentOS waarnaar in dit artikel wordt verwezen, is een Linux-distributie en bereikt het einde van de levensduur (EOL). Houd rekening met uw gebruik en plan dienovereenkomstig. Zie De richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.
Dit artikel bevat oplossingen voor een probleem waarbij het maken van verbinding met een virtuele Linux-machine (VM) via Secure Shell (SSH) mislukt omdat de map /var/empty/sshd in RHEL, de map /var/lib/empty in SUSE of de map /var/run/sshd in Ubuntu niet bestaat of niet eigendom is van de hoofdgebruiker, of het is groepsschrijfbaar of wereld-beschrijfbaar.
Symptomen
Wanneer u via SSH verbinding maakt met een virtuele Linux-machine (VM), mislukt de verbinding. Mogelijk ontvangt u het volgende foutbericht over de betreffende map, afhankelijk van uw Linux-distributie.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Oorzaak
Dit probleem kan optreden als de betreffende map niet eigendom is van de hoofdgebruiker of als deze groepsschrijfbaar of wereldschrijfbaar is.
Gebruik een van de volgende oplossingen om dit probleem op te lossen:
- Oplossing 1: herstel de virtuele machine online.
- Oplossing 2: de virtuele machine offline herstellen.
Oplossing 1: de virtuele machine online herstellen
Hier volgen twee methoden om de virtuele machine offline te herstellen:
De seriële console gebruiken
Maak verbinding met de seriële console van de virtuele machine vanuit Azure Portal.
Meld u aan bij de VIRTUELE machine met behulp van een lokaal beheerdersaccount en de bijbehorende referenties of het bijbehorende wachtwoord.
Voer deze volgende opdrachten uit om het machtigings- en eigendomsprobleem op te lossen:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Gebruik de extensie Opdracht uitvoeren
Notitie
Deze methode is afhankelijk van de Azure Linux VM Agent (waagent). Zorg er daarom voor dat de agent is geïnstalleerd in de VIRTUELE machine en of de service wordt uitgevoerd.
Open in Azure Portal het venster Eigenschappen van de VIRTUELE machine om de status van de agent te controleren. Als de agent is ingeschakeld en de status Gereed heeft, voert u de volgende stappen uit om de machtiging te wijzigen:
Ga naar Azure Portal, zoek uw VM-instellingen en selecteer vervolgens Opdracht uitvoeren onder Bewerkingen.
Voer het volgende shellscript uit door RunShellScript>Run te selecteren:
#!/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
- Nadat de uitvoering van het script is voltooid, wordt in het uitvoerconsolevenster het bericht Geslaagd inschakelen weergegeven.
Als u via SSH verbinding kunt maken met de virtuele machine en u de details van de uitvoering van het script Uitvoeren wilt analyseren, bekijkt u het bestand handler.log in de map /var/log/azure/run-command .
Oplossing 2: de virtuele machine offline herstellen
Notitie
- Gebruik deze resolutie als de toegang tot de seriële console van de VM niet beschikbaar is en de waagent niet gereed is.
- In Ubuntu wordt de map /var/run/sshd uitgevoerd in het geheugen. Als u de VIRTUELE machine opnieuw opstart, wordt het probleem ook opgelost. Daarom is offlineproblemen in Ubuntu-VM's niet nodig.
Hier volgen twee methoden om de virtuele machine offline te herstellen:
Automatisch herstellen van Azure Linux gebruiken (ALAR)
ALAR-scripts (Azure Linux Auto Repair) maken deel uit van de VM-herstelextensie die wordt beschreven in Een Virtuele Linux-machine herstellen met behulp van de herstelopdrachten van virtuele Azure-machines.
Volg deze stappen om het handmatige offlineproces te automatiseren:
Notitie
Vervang , $VMNAME
, , en $USERNAME
repairdiskcopy
$PASSWORD
waarden dienovereenkomstig in de volgende stappen.$RGNAME
Gebruik de opdracht az vm repair create om een herstel-VM te maken. De herstel-VM heeft een kopie van de besturingssysteemschijf voor de gekoppelde problematische VM.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Meld u aan bij de herstel-VM. Koppel en chroot aan het bestandssysteem van de bijgevoegde kopie van de besturingssysteemschijf. Volg de gedetailleerde chroot-instructies.
Voer de volgende opdrachten uit om problemen met machtigingen en eigendom op te lossen:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
Zodra de wijzigingen zijn toegepast, voert u de volgende
az vm repair restore
opdracht uit om een automatische wissel van de besturingssysteemschijf met de oorspronkelijke VM uit te voeren.az vm repair restore --verbose -g $RGNAME -n $VMNAME
De handmatige methode gebruiken
Als zowel de seriële console als de ALAR-benadering niet van toepassing is op u of mislukt, moet de reparatie handmatig worden uitgevoerd. Volg de onderstaande stappen om de besturingssysteemschijf handmatig aan een herstel-VM te koppelen en de besturingssysteemschijf terug te wisselen naar de oorspronkelijke VM:
- Koppel de besturingssysteemschijf aan een herstel-VM met behulp van Azure Portal.
- Koppel de besturingssysteemschijf aan een herstel-VM met behulp van Azure CLI.
Zodra de besturingssysteemschijf is gekoppeld aan de herstel-VM, volgt u de gedetailleerde chroot-instructies om de bestandssysteems van de gekoppelde besturingssysteemschijf te koppelen en te chrooten. Volg vervolgens stap 3 in de sectie Automatisch herstellen van Azure Linux (ALAR) gebruiken om de problemen met machtigingen en eigendom op te lossen.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.