Solución de problemas de conexión SSH en la máquina virtual Linux de Azure debido a problemas de permisos y propiedad
Se aplica a: ✔️ Máquinas virtuales Linux
Nota:
CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final del ciclo de vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para obtener más información, consulte Guía de fin de vida de CentOS.
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.
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:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
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>:
#!/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
- 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:
Utilice Azure Linux Auto Repair (ALAR)
Los scripts de reparación automática (ALAR) de Linux de Azure forman parte de la extensión de reparación de máquinas virtuales que 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 $RGNAME
los valores , $VMNAME
, $USERNAME
, $PASSWORD
y 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 repairdiskcopy
Inicie 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:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
Una vez aplicados los cambios, ejecute el siguiente
az vm repair restore
comando 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 tanto la consola serie como el enfoque ALAR 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 La reparación automática de Linux (ALAR) de Azure para resolver los problemas de permisos y propiedad.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.