39 lines
2.5 KiB
Markdown
39 lines
2.5 KiB
Markdown
# Контракт Linux-установщика
|
||
|
||
Файл `ochenstarik-server-monitor-manager.sh` находится в `ochenstarik-ui/lightweight-server`; синхронная копия хранится в `deploy/` этого репозитория.
|
||
|
||
## Первый тестовый этап: SSH pull
|
||
|
||
До появления постоянного агента Windows-клиент получает метрики через OpenSSH. Установщик:
|
||
|
||
- поддерживает Ubuntu/Debian с systemd;
|
||
- запрашивает публичный ключ `ssh-ed25519`, созданный Windows-клиентом;
|
||
- проверяет синтаксис ключа через `ssh-keygen`;
|
||
- устанавливает и включает OpenSSH Server, не меняя текущий SSH-порт;
|
||
- создаёт отдельного системного пользователя `ochenstarik-monitor` без пароля;
|
||
- устанавливает root-owned metrics command;
|
||
- записывает ключ как `restrict,command="..."`;
|
||
- не создаёт UFW-правил и не открывает дополнительных портов;
|
||
- поддерживает `install`, `status` и `uninstall`;
|
||
- допускает безопасный повторный запуск для замены ключа мониторинга.
|
||
|
||
Forced-command отдаёт только строки `KEY=VALUE`:
|
||
|
||
```text
|
||
PROTOCOL=1
|
||
HOSTNAME=server-name
|
||
UPTIME_SECONDS=12345
|
||
LOAD1=0.42
|
||
CPU_COUNT=4
|
||
MEM_TOTAL_KB=...
|
||
MEM_AVAILABLE_KB=...
|
||
DISK_TOTAL_KB=...
|
||
DISK_AVAILABLE_KB=...
|
||
KERNEL=...
|
||
```
|
||
|
||
Ключ мониторинга не должен позволять shell, PTY, agent forwarding, TCP forwarding или выполнение переданной клиентом команды. Полноценный SSH-терминал использует отдельную пользовательскую identity и не входит в этот ключ.
|
||
|
||
## Будущий этап: постоянный агент
|
||
|
||
После проверки UX на нескольких серверах SSH pull будет дополнен статическим агентом для потоковых метрик, systemd events, короткого локального буфера и управляемых WireGuard Links. Агент будет регистрироваться одноразовым token и работать по исходящему mTLS-соединению без входящего API.
|