Устранение неполадок с подключением 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. Восстановление виртуальной машины в сети.
- Решение 2. Восстановление виртуальной машины в автономном режиме.
Решение 1. Восстановление виртуальной машины в Сети
Ниже приведены два способа восстановления виртуальной машины в автономном режиме:
Использование последовательной консоли
Подключитесь к последовательной консоли виртуальной машины из портал Azure.
Войдите на виртуальную машину с помощью локальной административной учетной записи и соответствующих учетных данных или пароля.
Выполните следующие команды, чтобы устранить проблему с разрешениями и владением:
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 откройте окно свойств виртуальной машины, чтобы проверить состояние агента. Если агент включен и имеет состояние "Готово ", выполните следующие действия, чтобы изменить разрешение:
Перейдите к портал Azure, найдите параметры виртуальной машины и выберите команду "Выполнить команду" в разделе "Операции".
Выполните следующий скрипт оболочки, выбрав 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
- После завершения выполнения скрипта окно выходной консоли отобразит сообщение "Включить успешно".
Если вы можете подключиться к виртуальной машине через 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
значения соответствующим образом.
Используйте команду az vm repair create для создания виртуальной машины восстановления. У виртуальной машины восстановления есть копия диска ОС для подключенной к ней проблемной виртуальной машины.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Войдите на виртуальную машину восстановления. Подключите и chroot к файловой системе подключенной копии диска ОС. Следуйте подробным инструкциям chroot.
Выполните следующие команды, чтобы устранить проблемы с разрешением и владением:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
После применения изменений выполните следующую
az vm repair restore
команду, чтобы выполнить автоматическую смену диска ОС с исходной виртуальной машиной.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Использование ручного метода
Если последовательная консоль и подход ALAR не применяются к вам или не удается, необходимо выполнить восстановление вручную. Выполните приведенные ниже действия, чтобы вручную подключить диск ОС к виртуальной машине восстановления и переключите диск ОС обратно на исходную виртуальную машину:
- Подключите диск ОС к виртуальной машине восстановления с помощью портал Azure.
- Подключите диск ОС к виртуальной машине восстановления с помощью Azure CLI.
После успешного подключения диска ОС к виртуальной машине восстановления следуйте подробным инструкциям по подключению и chroot к файловой системе подключенного диска ОС. Затем выполните шаг 3 в разделе "Использование автоматического восстановления Linux Azure" (ALAR), чтобы устранить проблемы с разрешением и владением.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.