Об этом проекте

Eternal Terminal (ET) — это клиент-серверная система удалённой оболочки, переживающая сетевые сбои. В отличие от обычного SSH, при разрыве соединения она автоматически переподключается и восстанавливает сессию точно там, где пользователь её оставил, — без прерванных команд и потерянного вывода. ### Как это работает ET использует три компонента: - **`et`** (клиент): Запускается на локальной машине. Аутентифицируется через SSH, затем переключается на постоянное соединение ET по TCP-порту 2022. - **`etserver`** (серверный демон): Работает как системная служба (обычно управляется root) на удалённом хосте. Принимает клиентские подключения и направляет их в нужную пользовательскую сессию. - **`etterminal`** (серверный помощник): Запускается командой `et` через SSH. Обслуживает фактическую сессию терминала и регистрируется в `etserver` через FIFO. ### Ключевые возможности - **Автоматическое переподключение**: Сетевые сбои, переключения WiFi или обрывы VPN не убивают вашу сессию. - **Аутентификация на основе SSH**: Использует существующие SSH-ключи и конфигурацию для безопасной аутентификации. - **Проброс портов**: Поддерживает флаг `-t` для локального и удалённого проброса портов. - **Поддержка jumphost**: Подключение через промежуточные хосты с помощью `--jumphost` и `--jport`. - **Мультиплексор HTM**: Встроенный мультиплексор терминала (`htm`) поддерживает нативные окна, вкладки и разделения в совместимых эмуляторах терминала, интегрируясь с режимом управления tmux. - **Настраиваемость**: Серверные параметры находятся в `/etc/et.cfg` (порт, адрес привязки и т. д.). ### Установка Готовые пакеты доступны для macOS (Homebrew, MacPorts), Ubuntu/Debian (PPA и официальный deb-репозиторий), Fedora, CentOS 8+, FreeBSD, openSUSE и NixOS. Windows поддерживается через WSL. Сборка из исходников также описана для Debian/Ubuntu, CentOS 7 и macOS. ### Использование ```bash et hostname # порт по умолчанию 2022, текущее имя пользователя et user@hostname:8000 # пользовательский порт et hostname --jumphost jump # через jumphost ``` ET читает как пользовательские, так и общесистемные файлы конфигурации SSH; передайте `--ssh-config` с абсолютным путём, чтобы изолироваться от внешней конфигурации SSH, или `--no-ssh-config`, чтобы полностью её отключить. ### Документация протокола Подробная документация по протоколу и дизайну HTM доступна в репозитории в каталоге `docs/`.