# ssh-access-tui Консольный (TUI) инструмент для администрирования Linux jump-хоста: заводит пользователей, у которых есть **только** проброс портов (`LocalForward`, одно соединение сразу открывает все разрешённые сервисы) к явно разрешённому списку внутренних хостов — без интерактивного шелла. Хосты и сервисы описываются один раз в общем каталоге, группы просто выбирают из него. Генерирует и раздаёт зашифрованные архивы с ключом/конфигом/ инструкцией, блокирует уволенных, пишет журнал подключений, хранит всю конфигурацию в 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 ``` ## Запуск ```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/ руководство администратора, архитектура/модель угроз ```