このプロジェクトについて

Eternal Terminal (ET)は、ネットワーク障害を乗り越えるリモートシェルのクライアント・サーバーシステムです。通常のSSHとは異なり、接続が切断されると自動的に再接続し、ユーザーが中断した正確な場所からセッションを復元します。コマンドの中断や出力の損失はありません。 ### 仕組み ETは3つのコンポーネントを使用します: - **`et`**(クライアント):ローカルマシンで実行されます。SSHで認証し、その後TCPポート2022で永続的なET接続に切り替えます。 - **`etserver`**(サーバーデーモン):リモートホストでシステムサービス(通常はroot管理)として実行されます。クライアント接続を受け入れ、正しいユーザーセッションにルーティングします。 - **`etterminal`**(サーバーサイドヘルパー):`et`によってSSH経由で起動されます。実際のターミナルセッションをホストし、FIFOを介して`etserver`に登録します。 ### 主な機能 - **自動再接続**:ネットワークの瞬断、WiFiの切り替え、VPNの切断でもセッションは終了しません。 - **SSHベースの認証**:既存のSSHキーと設定を活用して安全な認証を行います。 - **ポートフォワーディング**:ローカルおよびリモートのポートフォワーディング用に`-t`フラグをサポートします。 - **ジャンプホストサポート**:`--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 # ジャンプホスト経由 ``` ETはユーザー固有およびシステム全体のSSH設定ファイルの両方を読み取ります。周囲のSSH設定から分離するには絶対パスで`--ssh-config`を渡すか、完全に無効にするには`--no-ssh-config`を使用します。 ### プロトコルドキュメント 詳細なプロトコルとHTM設計のドキュメントは、リポジトリの`docs/`にあります。