Сброс пароля root ESXi

Я только что унаследовал очень простую настройку виртуальной машины с кластеризованной парой серверов ESXi, и все в значительной степени подключено. Проблема в том, что у меня нет корневых паролей для серверов, и никто не имеет ни малейшего представления, что они собой представляют (угадывание пароля было опробовано)

Насколько я понимаю, ESXi не имеет однопользовательского режима или чего-либо подобного. Какие у меня варианты, кроме резервного копирования виртуальных машин и взлома сайта?

4 ответа

Решение

Для ESXi единственным поддерживаемым способом изменения пароля является переустановка.

Переустановка хоста ESXi является единственным поддерживаемым способом сброса пароля на ESXi. Любой другой метод может привести к сбою хоста или неподдерживаемой конфигурации из-за сложной природы архитектуры ESXi. ESXi не имеет служебной консоли и, как таковые, традиционные методы сброса пароля в Linux, такие как однопользовательский режим, не применяются.

Если у вас есть два хоста и у них есть ресурсы для его поддержки, вы можете vMotion (и / или хранилище vMotion) всех серверов на одном хосте, удалить и восстановить пустой хост, добавить его обратно в кластер. Затем переместите всех гостей на восстановленный хост и удалите / восстановите оставшийся хост. Это позволит вам восстановить без каких-либо простоев на гостей. В зависимости от вашей инфраструктуры и от количества перемещаемых виртуальных машин для восстановления двух хостов потребуется менее одного дня, если у вас не слишком большая или сложная конфигурация хоста.

Кроме того, если вы используете более старую версию ESXi, это также подходящее время для проверки текущего оборудования на соответствие HCL и перехода на последнюю версию, если она поддерживается (после обновления вашего сервера vCenter, конечно).

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

  • Используйте vCenter, чтобы присоединить каждый хост к домену AD, а также настроить и настроить пользователя AD в качестве администратора хоста и разрешить аутентификацию AD. Используйте клиент vSphere для прямого подключения к хосту, используя учетные данные AD для входа в систему. Подключившись таким образом, вы сможете сменить пароль для учетной записи root через клиент vSphere, подключенный напрямую к хосту. Я использовал это в крайнем случае, и это работает.
  • Создайте профиль хоста, в котором указан пароль, и прикрепите его к хосту. Это может быть сделано, но все еще требует, чтобы хост был переведен в режим обслуживания. Сам лично не использовал этот метод.

Существуют способы сброса корневого пароля хоста ESXi, если у вас есть физический или внеполосный доступ к серверу.

  • Я сделал это с помощью профилей хостов, повторно применив профиль, полученный с другого хоста, к уязвимому серверу. Но у вас, вероятно, нет лицензии для поддержки этого.
  • Я также должен использовать подход загрузочного CD/Live CD (также здесь), который предполагает некоторые знания Linux и включает установку пустого пароля или известного зашифрованного пароля в файле теней.

Что касается того, как это может произойти... Плохая документация, злобные администраторы, технический специалист центра обработки данных, который оставил CAPS-LOCK при сборке серверов, мою плохую память и т. Д.,:)

Пароль root ESXi зашифрован и хранится в файле с именем /ect/shadow. Как объясняется в этой статье, вы можете удалить пароль root, выполнив следующие действия:

  1. Загрузите свой сервер с Ubuntu Live CD.
  2. Распакуйте файл state.tgz, а затем local.tgz, удалите хэш пароля в теневом файле и заново запакуйте архив.
  3. После этого вы можете войти на хост ESXi в качестве учетной записи root без пароля.

Для меня ESXi 6 работает:

# https://www.linkedin.com/pulse/reset-esxi-root-password-through-vcenter-esxcli-method-buschhaus
#First, setup $vmhosts. You can do this many ways.$vmhosts = Get-Cluster -Name ClusterWithUnknownPassword | Get-VMHost

# Just so it contains one or more VMHost objects.
# To reset all ESXi host passwords use
# $vmhosts = Get-VMHost

$NewCredential = Get-Credential -UserName "root" -Message "Enter an existing ESXi username (not vCenter), and what you want their password to be reset to."

Foreach ($vmhost in $vmhosts) {
    $esxcli = get-esxcli -vmhost $vmhost -v2 #Gain access to ESXCLI on the host.
    $esxcliargs = $esxcli.system.account.set.CreateArgs() #Get Parameter list (Arguments)
    $esxcliargs.id = $NewCredential.UserName #Specify the user to reset
    $esxcliargs.password = $NewCredential.GetNetworkCredential().Password #Specify the new password
    $esxcliargs.passwordconfirmation = $NewCredential.GetNetworkCredential().Password
    Write-Host ("Resetting password for: " + $vmhost) #Debug line so admin can see what's happening.
    $esxcli.system.account.set.Invoke($esxcliargs) #Run command, if returns "true" it was successful.
}
Другие вопросы по тегам