Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali Linux
Sommario
Questo articolo fornisce soluzioni a un problema in cui la connessione a una macchina virtuale Linux (VM) tramite Secure Shell (SSH) ha esito negativo perché la directory /var/empty/sshd in RHEL, la directory /var/lib/empty in SUSE, o la directory /var/run/sshd in Ubuntu, non esiste, non è di proprietà dell'utente root, o è scrivibile dal gruppo o da chiunque.
Importante
New! Provare ad usare Assistente VM per risolvere le principali problematiche. È consigliabile eseguire VM assist for Windows o VM assist for Linux. Questi strumenti di diagnostica basati su script consentono di identificare i problemi comuni che influiscono sull'agente guest della macchina virtuale Azure e sull'integrità complessiva delle macchine virtuali.
Se si verificano problemi di prestazioni nelle macchine virtuali, eseguire questi strumenti prima di contattare supporto tecnico Microsoft.
Sintomi
Quando ci si connette a una macchina virtuale Linux tramite SSH, la connessione non riesce. È possibile che venga visualizzato il seguente messaggio di errore relativo alla directory interessata, a seconda della distribuzione linux.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Causa
Questo problema può verificarsi se la directory interessata non è di proprietà dell'utente root o se è scrivibile dal gruppo o globalmente.
Per risolvere il problema, usare una delle soluzioni seguenti:
- Risoluzione 1: ripristinare la macchina virtuale online.
- Risoluzione 2: ripristinare la macchina virtuale offline.
Risoluzione 1: Ripristinare la macchina virtuale online
Ecco due metodi per ripristinare la macchina virtuale offline:
Usa la console seriale
Connettersi a la console seriale della macchina virtuale dal portale di Azure.
Accedere alla macchina virtuale usando un account amministrativo locale e le credenziali o la password corrispondenti.
Eseguire i comandi seguenti per risolvere il problema di autorizzazione e proprietà:
Usare l'estensione "Esegui comando"
Nota
Questo metodo si basa sull'agente di macchine virtuali Linux Azure (waagent). Assicurarsi pertanto che l'agente sia installato nella macchina virtuale e che il relativo servizio sia in esecuzione.
Nel portale di Azure aprire la finestra Properties della macchina virtuale per controllare lo stato dell'agente. Se l'agente è abilitato e ha lo stato Pronto , seguire questa procedura per modificare l'autorizzazione:
Passare al portale di Azure, individuare le impostazioni della macchina virtuale e quindi selezionare Esegui comando in Operations.
Eseguire il seguente script della shell selezionando RunShellScript>Run:
- Al termine dell'esecuzione dello script, nella finestra della console di output verrà visualizzato un messaggio "Abilita completato".
Se è possibile connettersi alla macchina virtuale tramite SSH e si vogliono analizzare i dettagli dell'esecuzione dello script Run-command, esaminare il file handler.log nella directory /var/log/azure/run-command .
Risoluzione 2: Ripristinare la macchina virtuale offline
Nota
- Usare questa risoluzione se l'accesso alla console seriale della macchina virtuale non è disponibile e waagent non è pronto.
- In Ubuntu la directory /var/run/sshd viene eseguita in memoria. Il riavvio della macchina virtuale risolverà anche il problema. Pertanto, la risoluzione dei problemi offline nelle macchine virtuali Ubuntu non è necessaria.
Ecco due metodi per ripristinare la macchina virtuale offline:
Utilizzare az vm repair
Il az vm repair è parte dell'estensione vm-repair per l'interfaccia della riga di comando di Azure, è descritto in Riparare una VM Linux utilizzando i comandi di riparazione della macchina virtuale di Azure.
Seguire questa procedura per automatizzare il processo offline manuale:
Nota
Nei passaggi seguenti, sostituire i valori $RGNAME, $VMNAME, $USERNAME, $PASSWORD e repairdiskcopy di conseguenza.
Usare il comando az vm repair create per creare una macchina virtuale di ripristino. La macchina virtuale di ripristino ha una copia del disco del sistema operativo per la macchina virtuale problematica collegata.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopyAccedere alla macchina virtuale di ripristino. Montare e chroot nel file system della copia collegata del disco del sistema operativo. Seguire le istruzioni dettagliate di chroot.
Eseguire i comandi seguenti per risolvere i problemi di autorizzazione e proprietà:
Dopo aver applicato le modifiche, eseguire il comando seguente
az vm repair restoreper eseguire uno scambio automatico del disco del sistema operativo con la macchina virtuale originale.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Usare il metodo manuale
Se né la console seriale né l'approccio az vm repair si applicano a te o falliscono, il ripristino dovrà essere eseguito manualmente. Seguire questa procedura per collegare manualmente il disco del sistema operativo a una macchina virtuale di ripristino e scambiare il disco del sistema operativo nella macchina virtuale originale:
- Collega il disco del sistema operativo a una VM di ripristino usando il portale di Azure.
- Attach il disco del sistema operativo in una macchina virtuale di ripristino usando interfaccia della riga di comando di Azure.
Una volta collegato correttamente il disco del sistema operativo alla macchina virtuale di ripristino, seguire le istruzioni per eseguire il chroot dettagliate per montare ed eseguire il chroot sui file system del disco del sistema operativo collegato. Seguire quindi il passaggio 3 nella sezione Usare az vm repair per risolvere i problemi di autorizzazione e proprietà.