169 lines
5.9 KiB
Markdown
169 lines
5.9 KiB
Markdown
# Тестирование смены 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 нужна доработка.
|