# Тестирование смены root-пароля ## Как это работает Система использует **3 метода** смены пароля с автоматическим fallback: ### Метод 1: Proxmox API (основной) ``` POST /api/nodes/{node}/lxc/{vmid}/config Body: password=новый_пароль ``` - Самый быстрый и надёжный - Работает через API токен - Не требует SSH доступа ### Метод 2: SSH + pct set (fallback) ```bash 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) ```bash # Получить токен (замените 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: ```bash ssh root@IP_СЕРВЕРА # Введите новый пароль ``` ## Логи и отладка ### Backend логи ```bash # Просмотр логов в реальном времени 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 **Решение:** ```bash # Проверьте переменные окружения 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 ключей или доступа **Решение:** ```bash # Настройте 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 нужна доработка.