66 lines
3.7 KiB
Markdown
66 lines
3.7 KiB
Markdown
# 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/ руководство администратора, архитектура/модель угроз
|
||
```
|