Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ Máquinas virtuales Linux
En este artículo se proporcionan soluciones a un problema en el que se produce un error en la conexión a una máquina virtual Linux a través de Secure Shell (SSH) porque el directorio /var/empty/sshd en RHEL, el directorio /var/lib/empty en SUSE, o el directorio /var/run/sshd en Ubuntu, no existe, o no es propiedad del usuario raíz, o bien es grabable de grupo o de escritura mundial.
Importante
Nuevo Pruebe la asistencia de máquina virtual para resolver los principales problemas. Se recomienda ejecutar la asistencia de máquina virtual para Windows o la asistencia de máquina virtual para Linux. Estas herramientas de diagnóstico basadas en scripts le ayudan a identificar problemas comunes que afectan al agente invitado de máquina virtual de Azure y al estado general de la máquina virtual.
Si tiene problemas de rendimiento en las máquinas virtuales, ejecute primero estas herramientas antes de ponerse en contacto con el soporte técnico de Microsoft.
Síntomas
Cuando se conecta a una máquina virtual Linux a través de SSH, se produce un error en la conexión. Puede recibir el siguiente mensaje de error sobre el directorio afectado, en función de la distribución de Linux.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Causa
Este problema puede producirse si el directorio afectado no es propiedad del usuario raíz o si es grabable en grupo o en el mundo.
Para resolver este problema, use una de las siguientes resoluciones:
- Resolución 1: Reparar la máquina virtual en línea.
- Resolución 2: Reparar la máquina virtual sin conexión.
Resolución 1: Reparación de la máquina virtual en línea
Estos son dos métodos para reparar la máquina virtual sin conexión:
Utilizar la consola serie
Conéctese a la consola serie de la máquina virtual desde Azure Portal.
Inicie sesión en la máquina virtual mediante una cuenta administrativa local y su credencial o contraseña correspondientes.
Ejecute los comandos siguientes para resolver el problema de permisos y propiedad:
Usar la extensión "Ejecutar comando"
Nota:
Este método se basa en el agente de máquina virtual Linux de Azure (waagent). Por lo tanto, asegúrese de que el agente está instalado en la máquina virtual y de que su servicio se está ejecutando.
En Azure Portal, abra la ventana Propiedades de la máquina virtual para comprobar el estado del agente. Si el agente está habilitado y tiene el estado Listo , siga estos pasos para cambiar el permiso:
Vaya a Azure Portal, busque la configuración de la máquina virtual y seleccione Ejecutar comando en Operaciones.
Ejecute el siguiente script de shell; para ello, seleccione Ejecutar RunShellScript>:
- Una vez finalizada la ejecución del script, la ventana de la consola de salida mostrará un mensaje "Enable succeeded" (Habilitar correctamente).
Si puede conectarse a la máquina virtual a través de SSH y desea analizar los detalles de la ejecución del script run-command, examine el archivo handler.log en el directorio /var/log/azure/run-command .
Resolución 2: Reparación de la máquina virtual sin conexión
Nota:
- Use esta resolución si el acceso a la consola serie de la máquina virtual no está disponible y waagent no está listo.
- En Ubuntu, el directorio /var/run/sshd se ejecuta en memoria. Al reiniciar la máquina virtual también se corregirá el problema. Por lo tanto, no es necesario solucionar problemas sin conexión en máquinas virtuales Ubuntu.
Estos son dos métodos para reparar la máquina virtual sin conexión:
Uso de az vm repair
La az vm repairparte , parte de la extensión vm-repair para la CLI de Azure, se describe en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.
Siga estos pasos para automatizar el proceso manual sin conexión:
Nota:
En los pasos siguientes, reemplace $RGNAMElos valores , $VMNAME, $USERNAME, $PASSWORDy repairdiskcopy en consecuencia.
Use el comando az vm repair create para crear una máquina virtual de reparación. La máquina virtual de reparación tiene una copia del disco del sistema operativo para la máquina virtual problemática conectada.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopyInicie sesión en la máquina virtual de reparación. Monte y chroot en el sistema de archivos de la copia adjunta del disco del sistema operativo. Siga las instrucciones detalladas de chroot.
Ejecute los comandos siguientes para resolver los problemas de permisos y propiedad:
Una vez aplicados los cambios, ejecute el siguiente
az vm repair restorecomando para realizar un intercambio automático de disco del sistema operativo con la máquina virtual original.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Usar el método manual
Si la consola serie y az vm repair el enfoque no se aplican a usted o producen un error, la reparación debe realizarse manualmente. Siga los pasos siguientes para conectar manualmente el disco del sistema operativo a una máquina virtual de recuperación y volver a intercambiar el disco del sistema operativo a la máquina virtual original:
- Conecte el disco del sistema operativo a una máquina virtual de recuperación mediante Azure Portal.
- Conecte el disco del sistema operativo a una máquina virtual de recuperación mediante la CLI de Azure.
Una vez que el disco del SO se haya conectado correctamente a la máquina virtual de recuperación, siga las instrucciones detalladas de chroot para montar y hacer chroot a los sistemas de archivos del disco del SO conectado. A continuación, siga el paso 3 de la sección Uso de az vm repair para resolver los problemas de permisos y propiedad.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas, puede hacer soporte técnico a la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.