EternalTerminal多平台部署实战:从Linux到macOS的完整方案
EternalTerminal(简称ET)是一款支持自动重连且不中断会话的远程shell工具,完美解决了传统SSH连接易断开的痛点。本文将详细介绍如何在Linux和macOS系统上部署EternalTerminal,让你轻松实现稳定持久的远程终端连接。## 🚀 什么是EternalTerminal?EternalTerminal是一个创新的远程shell解决方案,它通过SSH进行握手和加
EternalTerminal多平台部署实战:从Linux到macOS的完整方案
EternalTerminal(简称ET)是一款支持自动重连且不中断会话的远程shell工具,完美解决了传统SSH连接易断开的痛点。本文将详细介绍如何在Linux和macOS系统上部署EternalTerminal,让你轻松实现稳定持久的远程终端连接。
🚀 什么是EternalTerminal?
EternalTerminal是一个创新的远程shell解决方案,它通过SSH进行握手和加密,提供类似SSH的使用体验,但增加了会话持久化和自动重连功能。其核心优势在于:
- 会话持久化:即使网络中断,终端会话也不会终止
- 自动重连:网络恢复后自动连接到之前的会话
- 端口转发:支持灵活的端口转发配置
- 多平台支持:兼容Linux、macOS及WSL环境
EternalTerminal连接架构
上图展示了EternalTerminal的基本连接架构,客户端通过SSH启动服务器端的etterminal进程,然后通过默认2022端口与etserver建立持久连接。
💻 系统要求
- Linux系统:Ubuntu 18.04+、Debian 10+、CentOS 7+、Fedora 29+等
- macOS系统:macOS 10.14+(Mojave及以上版本)
- 网络要求:客户端与服务器之间能够通过SSH通信,且服务器开放2022端口(可自定义)
📥 安装方法
macOS平台安装
Homebrew安装(推荐)
macOS用户可以通过Homebrew快速安装:
brew install MisterTea/et/et
安装完成后,需要配置开机启动服务:
Apple Silicon (M1/M2) Macs:
sudo sed 's:/usr/local/bin/etserver:/opt/homebrew/bin/etserver:g' ../init/launchd/homebrew.mxcl.et.plist | sudo tee /Library/LaunchDaemons/homebrew.mxcl.et.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.et.plist
Intel x86 Macs:
sudo cp ../init/launchd/homebrew.mxcl.et.plist /Library/LaunchDaemons/homebrew.mxcl.et.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.et.plist
MacPorts安装
也可以通过MacPorts安装:
sudo port install et
Linux平台安装
Ubuntu/Debian系统
Ubuntu用户可以使用PPA仓库:
sudo add-apt-repository ppa:jgmath2000/et
sudo apt-get update
sudo apt-get install et
Debian用户需添加官方deb仓库:
echo "deb [signed-by=/etc/apt/keyrings/et.gpg] https://mistertea.github.io/debian-et/debian-source/ $(grep VERSION_CODENAME /etc/os-release | cut -d= -f2) main" | sudo tee -a /etc/apt/sources.list.d/et.list
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -sSL https://github.com/MisterTea/debian-et/raw/master/et.gpg | sudo tee /etc/apt/keyrings/et.gpg >/dev/null
sudo apt update
sudo apt install et
CentOS/Fedora系统
CentOS 8+ / Fedora:
sudo dnf install epel-release
sudo dnf install et
CentOS 7需要从源码构建,详见下文"从源码构建"部分。
openSUSE系统
zypper ar -f obs://network
zypper ref
zypper in EternalTerminal
FreeBSD系统
pkg install eternalterminal
🔧 从源码构建
如果你的系统没有预编译包,或者需要最新开发版本,可以从源码构建:
1. 克隆仓库
git clone --recurse-submodules --depth 1 https://gitcode.com/gh_mirrors/et/EternalTerminal
cd EternalTerminal
2. 安装依赖
Debian/Ubuntu:
sudo apt install libsodium-dev autoconf libtool libprotobuf-dev protobuf-compiler libutempter-dev libcurl4-openssl-dev build-essential ninja-build cmake git zip pkg-config
Fedora/RHEL:
sudo dnf install boost-devel libsodium-devel protobuf-devel protobuf-compiler cmake gflags-devel libcurl-devel
macOS:
brew install autoconf automake libtool
3. 编译安装
mkdir build
cd build
cmake ../
make -j$(nproc)
sudo make install
⚙️ 配置与启动
配置文件
EternalTerminal的主配置文件位于/etc/et.cfg,你可以修改以下常用配置:
port: 服务器监听端口(默认2022)log_level: 日志级别(INFO, WARNING, ERROR等)max_sessions: 最大会话数
启动服务
systemd系统(大多数Linux发行版):
sudo systemctl enable --now et
验证服务状态:
systemctl status et
🚀 使用EternalTerminal
基本连接
EternalTerminal的使用方式与SSH类似:
# 基本连接(默认端口2022,当前用户名)
et hostname
# 指定用户和端口
et user@hostname:8000
使用跳转主机
EternalTerminal支持通过跳转主机(Jumphost)连接目标服务器,特别适合需要多层跳转的网络环境:
# 使用跳转主机
et hostname --jumphost jump_hostname
# 指定跳转主机端口
et hostname:8888 --jumphost jump_hostname --jport 9999
端口转发
EternalTerminal支持端口转发功能,可以将远程端口映射到本地:
# 端口转发(单个端口)
et hostname -t "18000:8000"
# 端口范围转发
et hostname -t "18001-18003:8001-8003"
结合SSH配置文件
EternalTerminal支持解析SSH配置文件(~/.ssh/config或/etc/ssh/ssh_config),可以直接使用配置好的主机别名:
# 假设~/.ssh/config中配置了名为"dev"的主机
et dev
📝 常见问题解决
问题1:服务无法启动
检查日志文件:/var/log/et/etserver.log,或使用以下命令查看状态:
sudo journalctl -u et
问题2:连接被拒绝
- 确保etserver服务已启动
- 检查服务器防火墙是否开放2022端口(或自定义端口)
- 验证SSH是否能正常连接到服务器
问题3:macOS安装时出现csignal错误
参考解决方案:
# 针对Homebrew安装时的csignal错误
brew install openssl
export CFLAGS="-I$(brew --prefix openssl)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib"
brew install MisterTea/et/et
📚 相关资源
- 配置文件示例:etc/et.cfg
- 服务配置文件:systemctl/et.service
- Docker部署:docker/README.md
通过本文的指南,你已经掌握了在Linux和macOS系统上部署EternalTerminal的完整流程。无论是日常远程管理还是开发工作,EternalTerminal都能为你提供稳定、持久的远程终端体验,告别网络中断导致的工作中断问题!
更多推荐





所有评论(0)