redlineoandClaude Sonnet 5 f50624023a Show full exception detail in error dialogs instead of just Message
An operator hit "Значение не может быть неопределенным. Имя параметра:
source" (ArgumentNullException, ParamName=source) opening the bulk
sender window on a real Outlook install. A full read-through of every
LINQ call reachable from that path found nothing that could receive a
null source, and this dev machine has no Outlook to reproduce against
- so the next occurrence needs a real stack trace to diagnose instead
of guessing from ex.Message alone.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 10:19:09 +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%