Я использую Openstack с KVM и libvirt. когда я пытаюсь сбросить пароль экземпляра с помощью nova API, я получаю сообщение об ошибке 501 not Implemented! Как изменить пароль экземпляра?
Как сбросить пароль экземпляра openstack с помощью KVM и libvirt?
Ответы (2)
В гипервизоре KVM сброс пароля экземпляра не поддерживается с помощью nova «root-password» из-за ограничений KVM. «nova root-password» поддерживается только в xenapi с запущенным гостевым агентом.
Однако вы можете вводить пароль во время запуска гипервизоров на основе Libvirt (KVM, QEMU, LXC).
Для гипервизоров, таких как KVM, которые используют серверную часть libvirt, внедрение пароля администратора/рута отключено по умолчанию. Чтобы включить его, установите следующую опцию в /etc/nova/nova.conf:
[либвирт]
inject_password = правда
Если этот параметр включен, служба вычислений изменит пароль учетной записи root, отредактировав файл /etc/shadow внутри экземпляра виртуальной машины.
Пользователи могут подключиться к экземпляру по ssh только с помощью пароля администратора, если:
The virtual machine image is a Linux distribution
The virtual machine has been configured to allow users to ssh as the root user. This is not the case for Ubuntu cloud images, which disallow ssh to the root account by default.
Вы можете использовать guestfish, как описано здесь . В основном вам нужно установить инструмент:
apt-get update
apt-get install libguestfs-tools or guestfish (depends on your distro)
Затем вы можете напрямую изменить образ виртуальной машины (не забудьте выключить виртуальную машину перед выполнением каких-либо изменений, чтобы избежать проблем с повреждением):
cd /var/lib/nova/instances/<your instance GUID>/
guestfish --rw -a disk -i edit /etc/ssh/sshd_config
Таким образом, вы можете включить
PasswordAuthentication no
Затем вы можете подключить свою виртуальную машину по ssh, используя ключ, сгенерированный во время создания. Или вы можете изменить пароль.
guestfish --rw -a disk -i edit /etc/sudoers
Включить в конец файла, например
[USERNAME] ALL=(ALL) NOPASSWD: ALL
Наконец, чтобы изменить пароль:
guestfish --rw -a disk -i command "bash -c 'echo USERNAME:PASSWORD | chpasswd'"