Полное руководство: Сброс пароля root в Proxmox VE через RescueCD

5 мин проверено на proxmox 7, 8
Содержание
  1. Предварительные требования
  2. Шаг 1. Загрузка с RescueCD и активация LVM
  3. Шаг 2. Монтирование корневого раздела
  4. Шаг 3. Смена пароля через chroot
  5. Решение проблемы: `Authentication token manipulation error`
  6. Шаг 4. Завершение и перезагрузка
  7. Шаг 5. Обязательный аудит безопасности
  8. Рекомендации на будущее

Потеря доступа к паролю root на сервере с Proxmox VE — ситуация неприятная, но решаемая. Главная сложность заключается в том, что в Proxmox по умолчанию используется LVM (Logical Volume Manager), из-за чего корневой раздел не виден как обычный диск (/dev/sda1) при загрузке с LiveCD. Стандартные методы сброса через GRUB (single-user mode) здесь часто не работают.

В этой статье мы пошагово разберем, как восстановить доступ, используя RescueCD, и как провести аудит безопасности после входа.

Предварительные требования

  • Доступ к консоли сервера (KVM/IPMI) или физический доступ.
  • Загрузочный образ SystemRescueCD (или любой другой Linux LiveCD).
  • Базовые навыки работы в командной строке Linux.

Шаг 1. Загрузка с RescueCD и активация LVM

  1. Загрузите сервер с RescueCD. В меню загрузки выберите пункт Linux-LiveCD-systemrescuecd (или аналогичный).

  2. После загрузки вы окажетесь в консоли root@sysresccd.

  3. Первым делом нужно понять, как устроена разметка дисков. Выполните:

    bash
    lsblk -f
    blkid
    • Если вы видите тип LVM2_member — у вас LVM (самый частый вариант). Переходите к шагу 2.
    • Если вы видите zfs_member или пул rpool — у вас ZFS. Примечание: для ZFS команды будут отличаться (zpool import -f -R /mnt/sys rpool).
  4. Активация LVM. Поскольку группа томов не активна, выполните:

bash
vgscan --mknodes
vgchange -ay
lvs

Важный нюанс: В стандартной установке Proxmox группа томов называется pve. Однако, как показывает практика, администраторы часто переименовывают её (например, в promox, data и т.д.). В выводе команды lvs найдите строку с томом root и запомните имя группы томов (VG) и самого тома (LV).\

Шаг 2. Монтирование корневого раздела

Теперь, когда логические тома активированы, нужно смонтировать корень системы во временную папку.

  1. Создайте точку монтирования:
bash
mkdir -p /mnt/sys
  1. Смонтируйте корневой том. Используйте формат /dev/<Имя_VG>/root. Например, если в lvs вы увидели группу promox:
bash
mount /dev/promox/root /mnt/sys

Если группа называется pve, команда будет `mount /dev/pve/root /mnt/sys

  1. Проверьте, что смонтировали именно корень:
bash
ls /mnt/sys

Вы должны увидеть стандартные директории: bin, boot, etc, root, var и т.д.

Шаг 3. Смена пароля через chroot

Чтобы изменить пароль, нужно «войти» в смонтированную систему, используя chroot.

  1. Смонтируйте виртуальные файловые системы (это нужно для корректной работы утилит внутри chroot):
bash
for d in dev proc sys; do sudo mount --rbind /$d /mnt/pve/$d; done
sudo chroot /mnt/pve passwd root

Если не получилось то можно и так
mount --rbind /dev /mnt/sys/dev
mount --rbind /proc /mnt/sys/proc
mount --rbind /sys /mnt/sys/sys

Совет: Вводите эти команды по одной. Не пытайтесь объединить их в цикл for, так как в консоли RescueCD это часто приводит к синтаксическим ошибкам.

  1. Входим в систему и меняем пароль:
bash
chroot /mnt/sys passwd root
  1. Введите новый пароль дважды. Обратите внимание: при вводе символы не отображаются на экране. Убедитесь, что раскладка клавиатуры английская (US) и Caps Lock выключен.
  2. При успехе вы увидите сообщение: password updated successfully.

Решение проблемы: Authentication token manipulation error

Если при смене пароля вы получили ошибку passwd: Authentication token manipulation error, это может быть связано с:

  • Несовпадением паролей (вы опечатались при повторном вводе).
  • Раскладкой клавиатуры (попробуйте задать максимально простой пароль, например 12345678).
  • Файловая система смонтирована только для чтения. Проверьте это командой mount | grep /mnt/sys. Если в параметрах есть ro, перемонтируйте раздел в режим записи:
bash
mount -o remount,rw /mnt/sys
  • Альтернативный метод (если passwd упорно не работает):
    Выйдите из chroot (exit), сгенерируйте хэш пароля: openssl passwd -6, скопируйте полученную строку. Затем откройте файл /mnt/sys/etc/shadow (например, через nano), найдите строку, начинающуюся с root:, и замените второе поле (между первым и вторым двоеточием) на ваш хэш.

Шаг 4. Завершение и перезагрузка

  1. Выйдите из chroot:
bash
exit
  1. Размонтируйте все обратно (в обратном порядке):
bash
for d in dev proc sys; do sudo umount -R /mnt/pve/$d; done
sudo umount -R /mnt/pve     # для ZFS вместо этого: sudo zpool export rpool
или
umount -R /mnt/sys/dev /mnt/sys/proc /mnt/sys/sys
umount -R /mnt/sys
  1. Перезагрузите сервер:
bash
reboot
  1. Важно: Не забудьте вынуть загрузочную флешку или отключить ISO-образ в настройках виртуальной машины, чтобы сервер загрузился со штатного диска.
  2. Новый пароль подойдет для входа в веб-интерфейс Proxmox (https://IP:8006, пользователь root, realm Linux PAM) и для SSH.

Шаг 5. Обязательный аудит безопасности

  1. После успешного входа не спешите закрывать консоль. Если пароль был изменен не вами, или если вы подозреваете взлом, необходимо проверить систему на наличие бэкдоров и левых пользователей. Вот чек-лист:
bash
last -F
journalctl _COMM=passwd --since "-30 days"

Ищите подозрительные IP-адреса и время смены паролей.

  1. Проверьте наличие неизвестных пользователей:
bash
cat /etc/passwd
grep -E "/bin/bash|/bin/sh" /etc/passwd

Особое внимание уделите пользователям с UID 0 (кроме root) и тем, у кого есть оболочка bash.

  1. Проверьте SSH-ключи root:
bash
cat /root/.ssh/authorized_keys

Если вы видите незнакомый публичный ключ — немедленно удалите его! 4. Проверьте пользователей Proxmox:

bash
pveum user list

Убедитесь, что нет лишних пользователей, и что email root принадлежит вам. Если видите чужой email — смените его, так как на него могут уходить уведомления.

  1. Проверьте автозагрузку и cron:
bash
crontab -l
ls -la /etc/cron.d/
systemctl list-units --type=service --state=running
  1. Проверьте сетевые соединения и процессы:
bash
ss -tulpn
ps auxfw
  1. Поиск недавно измененных файлов:
bash
find /etc /bin /sbin /usr/bin /usr/sbin -mtime -2 -type f -ls

Рекомендации на будущее

  • Настройте двухфакторную аутентификацию (2FA) для входа в Proxmox.
  • Используйте сложные пароли и регулярно их меняйте.
  • Ограничьте доступ к веб-интерфейсу Proxmox (порт 8006) по IP-адресам через файрвол.
  • Регулярно обновляйте Proxmox VE до актуальной версии.

Восстановление доступа — это только половина дела. Убедитесь, что ваша система действительно безопасна, прежде чем возвращать её в продакшн.

Статья помогла?

Нашли ошибку или устаревшую команду? Выделите текст и нажмите Ctrl+Enter.

Комментарии

Комментариев пока нет.

Код можно выделять `обратными кавычками`. Комментарии проверяются перед публикацией.