Sobre el proyecto

Eternal Terminal (ET) es un sistema cliente-servidor de shell remoto que sobrevive a interrupciones de red. A diferencia de SSH simple, cuando una conexión se cae, se reconecta automáticamente y restaura la sesión exactamente donde el usuario la dejó, sin comandos interrumpidos ni salida perdida. ### Cómo funciona ET utiliza tres componentes: - **`et`** (cliente): Se ejecuta en la máquina local. Autentica mediante SSH y luego cambia a una conexión ET persistente sobre el puerto TCP 2022. - **`etserver`** (demonio del servidor): Se ejecuta como un servicio del sistema (normalmente gestionado por root) en el host remoto. Acepta conexiones de clientes y las enruta a la sesión de usuario correcta. - **`etterminal`** (ayudante del lado del servidor): Lanzado por `et` a través de SSH. Aloja la sesión de terminal real y se registra con `etserver` mediante un FIFO. ### Características clave - **Reconexión automática**: Los cortes de red, transiciones WiFi o caídas de VPN no matan tu sesión. - **Autenticación basada en SSH**: Aprovecha las claves y configuraciones SSH existentes para una autenticación segura. - **Reenvío de puertos**: Soporta la bandera `-t` para reenvío de puertos local y remoto. - **Soporte de host de salto**: Conéctate a través de hosts intermedios con `--jumphost` y `--jport`. - **Multiplexor HTM**: El multiplexor de terminal incluido (`htm`) soporta ventanas, pestañas y divisiones nativas en emuladores de terminal compatibles, integrándose con el modo de control de tmux. - **Configurable**: La configuración del servidor vive en `/etc/et.cfg` (puerto, dirección de enlace, etc.). ### Instalación Hay paquetes precompilados disponibles para macOS (Homebrew, MacPorts), Ubuntu/Debian (PPA y repositorio deb oficial), Fedora, CentOS 8+, FreeBSD, openSUSE y NixOS. Windows se soporta mediante WSL. También se documentan compilaciones desde el código fuente para Debian/Ubuntu, CentOS 7 y macOS. ### Uso ```bash et hostname # puerto predeterminado 2022, usuario actual et user@hostname:8000 # puerto personalizado et hostname --jumphost jump # a través de host de salto ``` ET lee tanto archivos de configuración SSH específicos del usuario como del sistema; pasa `--ssh-config` con una ruta absoluta para aislarse de la configuración SSH ambiental, o `--no-ssh-config` para desactivarla por completo. ### Documentación del protocolo La documentación detallada del protocolo y del diseño de HTM está disponible en el repositorio bajo `docs/`.