redlineoandClaude Sonnet 5 6e823954a3 Fix hidden add/remove template buttons, add per-template login filter
The add/remove template buttons sat directly below the fixed-height
list with only 6px of margin to the tab's bottom edge - enough on this
dev machine but not on the operator's real one (different DPI/font
scale), so the buttons rendered off the visible area. Moved them above
the list instead (visibility no longer depends on how much space is
left at the bottom) and gave the whole "Шаблоны" tab substantially
more vertical room throughout.

Also added an optional per-template login regex filter
(MailTemplateDefinition.LoginPattern): once a file's suffix matches a
template, its login must also match that template's pattern (if any)
or the row surfaces as a clear Error in the preview instead of
silently going through - addresses "непонятно что будет работать".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 12:23:54 +03:00
2026-07-23 11:29:25 +03:00
2026-07-22 14:14:53 +03:00
2026-07-23 12:38:13 +03:00
2026-07-23 12:38:13 +03:00
2026-07-22 14:14:53 +03:00
2026-07-23 11:29:25 +03:00
2026-07-22 14:14:53 +03:00
2026-07-22 14:14:53 +03:00
2026-07-23 12:38:13 +03:00
2026-07-23 12:38:13 +03:00

ssh-access-tui

Консольный (TUI) инструмент для администрирования Linux jump-хоста: заводит пользователей, у которых есть только проброс портов к явно разрешённому списку внутренних хостов — без интерактивного шелла. Клиентский конфиг выдаётся в одном из двух режимов на выбор администратора (переключается на пользователя, по умолчанию — первый): LocalForward (одно всегда открытое соединение jump сразу открывает все разрешённые сервисы на локальных портах) или ProxyJump (отдельный Host-алиас на каждый сервис, ssh <алиас> по требованию, без постоянно открытого туннеля и локальных портов). Оба режима — только формат клиентского конфига; на сервере в обоих случаях одинаково работает permitopen=-ограничение в authorized_keys (см. docs/ARCHITECTURE.md). Хосты и сервисы описываются один раз в общем каталоге, группы просто выбирают из него. Генерирует и раздаёт зашифрованные архивы с ключом/конфигом/инструкцией, блокирует уволенных, пишет журнал подключений, хранит всю конфигурацию в 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 — только для сборки бинарника (можно собрать на другой машине).

Установка

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):

git -C /var/lib/ssh-access-tui/state remote add origin <ssh-или-https-url>

Запуск

sudo ssh-access-tui

Полное руководство по экранам и типовым сценариям — в docs/ADMIN_GUIDE.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/                  руководство администратора, архитектура/модель угроз
S
Description
No description provided
Readme
6.9 MiB
0 Stars 1 Watchers 0 Forks
2026-07-24 13:05:30 +03:00
Languages
Go 52.1%
C# 45.5%
PowerShell 1.3%
Shell 1.1%