Files
ospab.host/ospabhost/backend/test-scripts/PASSWORD_CHANGE_TESTING.md
2025-11-23 14:35:16 +03:00

5.9 KiB
Raw Blame History

Тестирование смены root-пароля

Как это работает

Система использует 3 метода смены пароля с автоматическим fallback:

Метод 1: Proxmox API (основной)

POST /api/nodes/{node}/lxc/{vmid}/config
Body: password=новый_пароль
  • Самый быстрый и надёжный
  • Работает через API токен
  • Не требует SSH доступа

Метод 2: SSH + pct set (fallback)

ssh root@proxmox "pct set {vmid} --password 'новый_пароль'"
  • Запасной вариант если API не работает
  • Требует SSH доступа от backend к Proxmox
  • Настраивается через .env

Метод 3: Exec внутри контейнера (последний fallback)

POST /api/nodes/{node}/lxc/{vmid}/exec
Body: { command: ["bash", "-c", "echo 'root:пароль' | chpasswd"] }
  • Выполняет команду внутри контейнера
  • Работает если контейнер запущен
  • Не требует SSH

Как протестировать

1. Через веб-интерфейс

  1. Откройте панель управления сервером
  2. Перейдите на вкладку "Настройки"
  3. Нажмите кнопку "Сменить root-пароль"
  4. Подтвердите действие
  5. Новый пароль появится на вкладке "Обзор"

2. Через API (curl)

# Получить токен (замените email и password)
TOKEN=$(curl -X POST https://ospab.host:5000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","password":"yourpassword"}' \
  | jq -r '.token')

# Сменить пароль (замените {id} на ID сервера)
curl -X POST https://ospab.host:5000/api/server/{id}/password \
  -H "Authorization: Bearer $TOKEN" \
  | jq

3. Проверка нового пароля

Через noVNC консоль:

  1. Откройте консоль сервера
  2. Войдите как root
  3. Введите новый пароль из панели

Через SSH:

ssh root@IP_СЕРВЕРА
# Введите новый пароль

Логи и отладка

Backend логи

# Просмотр логов в реальном времени
pm2 logs ospab-backend

# Или если запущен напрямую
tail -f /var/www/ospab-host/backend/logs/pm2-out.log

Что искать в логах:

Успешная смена:

✅ Пароль успешно изменён для контейнера 123
✅ Пароль успешно обновлён для сервера #5 (VMID: 123)

Ошибки:

❌ Ошибка смены пароля через API: ...
⚠️ Основной метод не сработал, пробуем через exec...
❌ Ошибка смены пароля через SSH: ...

Возможные проблемы

Проблема 1: "Не удалось изменить пароль"

Причина: Нет доступа к Proxmox API или SSH

Решение:

# Проверьте переменные окружения
cat /var/www/ospab-host/backend/.env | grep PROXMOX

# Должны быть установлены:
PROXMOX_API_URL=https://IP:8006/api2/json
PROXMOX_TOKEN_ID=root@pam!your-token-name
PROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
PROXMOX_NODE=proxmox

Проблема 2: SSH метод не работает

Причина: Нет SSH ключей или доступа

Решение:

# Настройте SSH ключи (на сервере с backend)
ssh-keygen -t rsa -b 4096
ssh-copy-id root@PROXMOX_IP

# Проверьте доступ
ssh root@PROXMOX_IP "pct list"

Проблема 3: Контейнер не запущен

Причина: Exec метод работает только для запущенных контейнеров

Решение:

  1. Запустите контейнер
  2. Подождите 30 секунд
  3. Попробуйте снова сменить пароль

Автоматическое скрытие пароля

Пароль автоматически скрывается через 30 минут после:

  • Создания сервера
  • Смены пароля

Как проверить:

  1. Создайте сервер или смените пароль
  2. Пароль виден на вкладке "Обзор"
  3. Через 30 минут пароль будет заменён на "••••••••"
  4. Кнопка "Показать пароль" перестанет работать

Как показать снова:

Нажмите "Сменить root-пароль" - будет сгенерирован новый пароль и снова виден 30 минут.

Частые вопросы

Q: Как часто можно менять пароль? A: Без ограничений. Каждая смена генерирует новый случайный пароль.

Q: Можно ли задать свой пароль? A: Нет, система генерирует случайный пароль 16 символов для безопасности.

Q: Пароль сохраняется в базе? A: Да, в зашифрованном виде в таблице server.rootPassword.

Q: Что если я потерял пароль? A: Просто нажмите "Сменить root-пароль" - будет сгенерирован новый.

Q: Работает ли для KVM виртуалок? A: Эта реализация для LXC контейнеров. Для KVM нужна доработка.