Сброс пароля 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, выполнив следующие действия:
- Загрузите свой сервер с Ubuntu Live CD.
- Распакуйте файл state.tgz, а затем local.tgz, удалите хэш пароля в теневом файле и заново запакуйте архив.
- После этого вы можете войти на хост 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.
}