5.9 KiB
Тестирование смены 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. Через веб-интерфейс
- Откройте панель управления сервером
- Перейдите на вкладку "Настройки"
- Нажмите кнопку "Сменить root-пароль"
- Подтвердите действие
- Новый пароль появится на вкладке "Обзор"
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 консоль:
- Откройте консоль сервера
- Войдите как
root - Введите новый пароль из панели
Через 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 метод работает только для запущенных контейнеров
Решение:
- Запустите контейнер
- Подождите 30 секунд
- Попробуйте снова сменить пароль
Автоматическое скрытие пароля
Пароль автоматически скрывается через 30 минут после:
- Создания сервера
- Смены пароля
Как проверить:
- Создайте сервер или смените пароль
- Пароль виден на вкладке "Обзор"
- Через 30 минут пароль будет заменён на "••••••••"
- Кнопка "Показать пароль" перестанет работать
Как показать снова:
Нажмите "Сменить root-пароль" - будет сгенерирован новый пароль и снова виден 30 минут.
Частые вопросы
Q: Как часто можно менять пароль? A: Без ограничений. Каждая смена генерирует новый случайный пароль.
Q: Можно ли задать свой пароль? A: Нет, система генерирует случайный пароль 16 символов для безопасности.
Q: Пароль сохраняется в базе?
A: Да, в зашифрованном виде в таблице server.rootPassword.
Q: Что если я потерял пароль? A: Просто нажмите "Сменить root-пароль" - будет сгенерирован новый.
Q: Работает ли для KVM виртуалок? A: Эта реализация для LXC контейнеров. Для KVM нужна доработка.