Поделиться через


Устранение неполадок с подключением SSH в виртуальной машине Linux Azure из-за проблем с разрешением и владением

Область применения: ✔️ виртуальные машины Linux

Примечание.

CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

В этой статье приводятся решения проблемы, в которой подключение к виртуальной машине Linux с помощью Secure Shell (SSH) завершается сбоем, так как каталог /var/empty/sshd в RHEL, каталог /var/lib/empty в SUSE или каталог /var/run/sshd в Ubuntu не существует, или он не принадлежит корневому пользователю, или он не принадлежит корневому пользователю, или это групповая запись или мировая запись.

Симптомы

При подключении к виртуальной машине Linux через SSH подключение завершается ошибкой. В зависимости от дистрибутива Linux может появиться следующее сообщение об ошибке о затронутом каталоге.

sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.  

Причина

Эта проблема может возникнуть, если затронутый каталог не принадлежит корневому пользователю, или если он доступен для записи в группу или в мире.

Чтобы устранить эту проблему, используйте одно из следующих разрешений:

Решение 1. Восстановление виртуальной машины в Сети

Ниже приведены два способа восстановления виртуальной машины в автономном режиме:

Использование последовательной консоли

  1. Подключитесь к последовательной консоли виртуальной машины из портал Azure.

  2. Войдите на виртуальную машину с помощью локальной административной учетной записи и соответствующих учетных данных или пароля.

  3. Выполните следующие команды, чтобы устранить проблему с разрешениями и владением:

    sudo mkdir -p /var/empty/sshd
    sudo chmod 755 /var/empty/sshd
    sudo chown root:root /var/empty/sshd
    

Использование расширения Run Command

Примечание.

Этот метод использует агент виртуальной машины Linux Azure (waagent). Поэтому убедитесь, что агент установлен на виртуальной машине и что ее служба запущена.

В портал Azure откройте окно свойств виртуальной машины, чтобы проверить состояние агента. Если агент включен и имеет состояние "Готово ", выполните следующие действия, чтобы изменить разрешение:

  1. Перейдите к портал Azure, найдите параметры виртуальной машины и выберите команду "Выполнить команду" в разделе "Операции".

  2. Выполните следующий скрипт оболочки, выбрав 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. После завершения выполнения скрипта окно выходной консоли отобразит сообщение "Включить успешно".

Если вы можете подключиться к виртуальной машине через SSH, и вы хотите проанализировать сведения о выполнении скрипта run-command, изучите файл handler.log в каталоге /var/log/azure/run-command .

Решение 2. Восстановление виртуальной машины в автономном режиме

Примечание.

  • Используйте это разрешение, если доступ к последовательной консоли виртуальной машины недоступен, и waagent не готов.
  • В Ubuntu каталог /var/run/sshd выполняется в памяти. Перезапуск виртуальной машины также исправит проблему. Поэтому автономное устранение неполадок на виртуальных машинах Ubuntu не требуется.

Ниже приведены два способа восстановления виртуальной машины в автономном режиме:

Использование автоматического восстановления Azure Linux (ALAR)

Скрипты автоматического восстановления Azure Linux (ALAR) являются частью расширения восстановления виртуальной машины, описанного в статье "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.

Выполните следующие действия, чтобы автоматизировать автономный процесс вручную:

Примечание.

В следующих шагах замените $RGNAME, $VMNAME$USERNAME, $PASSWORDи repairdiskcopy значения соответствующим образом.

  1. Используйте команду az vm repair create для создания виртуальной машины восстановления. У виртуальной машины восстановления есть копия диска ОС для подключенной к ней проблемной виртуальной машины.

    az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
    
  2. Войдите на виртуальную машину восстановления. Подключите и chroot к файловой системе подключенной копии диска ОС. Следуйте подробным инструкциям chroot.

  3. Выполните следующие команды, чтобы устранить проблемы с разрешением и владением:

    mkdir -p /var/empty/sshd
    chmod 755 /var/empty/sshd
    chown root:root /var/empty/sshd
    
  4. После применения изменений выполните следующую az vm repair restore команду, чтобы выполнить автоматическую смену диска ОС с исходной виртуальной машиной.

    az vm repair restore --verbose -g $RGNAME -n $VMNAME
    

Использование ручного метода

Если последовательная консоль и подход ALAR не применяются к вам или не удается, необходимо выполнить восстановление вручную. Выполните приведенные ниже действия, чтобы вручную подключить диск ОС к виртуальной машине восстановления и переключите диск ОС обратно на исходную виртуальную машину:

После успешного подключения диска ОС к виртуальной машине восстановления следуйте подробным инструкциям по подключению и chroot к файловой системе подключенного диска ОС. Затем выполните шаг 3 в разделе "Использование автоматического восстановления Linux Azure" (ALAR), чтобы устранить проблемы с разрешением и владением.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.