This commit is contained in:
redlineo committed 2026-07-22 14:14:53 +03:00
commit 23c7133fa9
33 files changed
+2896

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
# ssh-access-tui
Консольный (TUI) инструмент для администрирования Linux jump-хоста: заводит
пользователей, у которых есть **только** проброс портов (`-L`/`-D`) и прыжок
(`ProxyJump`) к явно разрешённому списку внутренних хостов — без
интерактивного шелла. Управляет группами доступа, генерирует и раздаёт
зашифрованные архивы с ключом/конфигом/инструкцией, блокирует уволенных,
пишет журнал подключений и хранит всю конфигурацию в git для бэкапа/переезда.
Почему не веб-панель: инструмент требует root (создание пользователей,
правка `authorized_keys` и `sshd_config`). Веб-бэкенд с такими правами —
новый слушающий процесс с TLS/сессиями/CSRF на и так критичном хосте. TUI
работает поверх уже существующего SSH+sudo доступа админа и не добавляет
новой сетевой поверхности атаки.
## Требования на jump-хосте
- Linux с systemd и OpenSSH ≥ 7.2 (`restrict`, `permitopen=` в
`authorized_keys`; актуальные Debian/Ubuntu/RHEL этому условию отвечают).
- `ssh-keygen`, `7z` (пакет `p7zip-full`), `git` — устанавливаются через
системный пакетный менеджер.
- Go ≥ 1.24 — только для сборки бинарника (можно собрать на другой машине).
## Установка
```sh
sudo apt-get install -y p7zip-full git # или аналог для вашего дистрибутива
sudo ./scripts/install.sh
```
Скрипт собирает бинарник, ставит systemd-юниты (сборщик журнала подключений
и часовой git-бэкап состояния), создаёт каталоги `/var/lib/ssh-access-tui/*`
и `Match`-блок в `/etc/ssh/sshd_config.d/50-ssh-access-tui.conf`.
После установки настройте git-бэкап на внешний репозиторий (см.
[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md#бэкап-и-аварийное-восстановление)):
```sh
git -C /var/lib/ssh-access-tui/state remote add origin <ssh-или-https-url>
```
## Запуск
```sh
sudo ssh-access-tui
```
Полное руководство по экранам и типовым сценариям — в
[docs/ADMIN_GUIDE.md](docs/ADMIN_GUIDE.md).
Обоснование архитектурных решений и модель угроз — в
[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
## Структура репозитория
```
cmd/ssh-access-tui/ точка входа (TUI, install, audit-tail)
internal/model/ типы данных (Group, Host, User, State)
internal/store/ YAML-состояние в git-репозитории, файловая блокировка
internal/sysadm/ useradd/usermod, authorized_keys, sshd Match-блок
internal/keymgr/ генерация ключей, клиентский config, .7z архив
internal/audit/ журнал подключений (JSONL) + "кто сейчас в сети"
internal/ui/ bubbletea TUI
scripts/ install.sh, systemd-юниты, скрипт бэкапа
docs/ руководство администратора, архитектура/модель угроз
```