WezTerm 多路复用完整指南:从 3 行本地连接到 SSH 与 WSL 会话

发布时间:2026/9/4 14:22:58
WezTerm 多路复用完整指南:从 3 行本地连接到 SSH 与 WSL 会话 WezTerm 多路复用完整指南从 3 行本地连接到 SSH 与 WSL 会话【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/wezterm本文面向刚接触 WezTerm 多路复用的新手按先跑通、再理解、后扩展的顺序演示本地、SSH 域与 WSL 三种终端会话接法帮你把会话从窗口里解绑出来。先跑通两行配置加一条命令的最小连接在动手理解原理之前先让 WezTerm 具备关了窗口会话还在的能力。把下面两行加进~/.wezterm.lua文件不存在就新建config.unix_domains { { name unix } } config.default_gui_startup_args { connect, unix }第一行声明了一个叫unix的本地域WezTerm 需要时会自动拉起后台的wezterm-mux-server进程第二行让 GUI 启动时默认执行wezterm connect unix省掉手动连接这一步。保存后启动 WezTerm此时你看到的每个标签页都不再属于某个窗口而是属于后台服务器里的unix域。关掉整个窗口过一会儿再启动 WezTerm之前的标签页会原样回来——这就是多路复用最直观的感受。如果不想每次启动自动连接删掉第二行即可需要时手动执行wezterm connect unix域Domain是什么从关窗事故说起默认情况下标签页跟着窗口走窗口一关全部消失。启用了多路复用后会话的归属变了域Domain是后台服务器里一组独立的窗口、标签页和窗格集合有自己的生命周期图形窗口只是域的一个视图可以同时打开多个窗口 attach 到同一个域也可以 detach 让域独自活着会话数据运行中的程序、滚动历史存放在域里与任何单个窗口无关。WezTerm 内置了三种常用域类型另有一种适合跨网络场景域类型传输通道典型用途额外要求本地域进程内GUI 默认窗口管理无Unix 域Unix 套接字本机多窗口共享、WSL 互连无SSH 域SSH 隧道远程服务器会话持久化远端装有 WezTermTLS 域加密 TCP跨网络长期连接客户端/服务端各配一段一个实用推论同一台机器上可以定义多个 Unix 域比如work和side各自存放互不干扰的项目会话相当于按项目做资源隔离。场景一本地多开一套快捷键全通用本地域接好之后日常操作基本不离开键盘操作方式新建标签页CtrlShiftT新标签自动落在当前所在域上下左右分窗格wezterm cli split-pane --bottom/--right等在窗格间跳转Alt 方向键给当前域加新标签命令行侧wezterm cli spawn --domain-name unix窗格切出来之后长这样数字键可以直接激活对应窗格想批量查看本机所有会话的分布运行wezterm cli list它会以表格形式列出窗口、标签和窗格 ID后续很多wezterm cli子命令都靠这些 ID 定位目标。场景二三条命令连上远程服务器先说硬前提远程主机上必须也装有 WezTerm建议两端版本一致因为会话实际上跑在远端的wezterm-mux-server里。在.wezterm.lua中声明一个 SSH 域config.ssh_domains { { name prod, remote_address 192.168.1.100, username devops, }, }三个字段分别给域起名、指定主机地址、指定登录用户name与remote_address还能顺带命中你~/.ssh/config里对应主机的配置项。然后wezterm connect prod # 新开窗口连入 wezterm cli spawn --domain-name prod # 或在现有窗口加一个远程标签 wezterm --version # 两端先核对版本是否一致更省事的方式是零配置WezTerm 会自动读取~/.ssh/config把其中每台主机生成两个入口——普通 SSH 会话带SSH:前缀多路复用会话带SSHMUX:前缀。如果你维护着一堆服务器直接wezterm connect SSHMUX:staging即可不用为它们逐条写ssh_domains。自定义该行为可参考 wezterm.default_ssh_domains 的示例更多可选项见 SshDomain。场景三让 WSL 成为 Windows 上的默认环境⚠️ 这个接法目前只支持 WSL 1WSL 2 的 AF_UNIX 互通尚未解决。第一步在 WSL 内部~/.wezterm.lua把套接字放到 Windows 可见的位置并放宽权限检查——NTFS 上的权限位总是看起来不对所以必须跳过config.unix_domains { { name wsl, socket_path /mnt/c/Users/YourName/.local/share/wezterm/sock, skip_permissions_check true, }, }第二步在 Windows 侧的.wezterm.lua里把服务器拉起命令换成通过wsl启动并设为默认连接目标config.unix_domains { { name wsl, serve_command { wsl, wezterm-mux-server, --daemonize } }, } config.default_gui_startup_args { connect, wsl }此后从开始菜单启动 WezTerm 就会直接落进 WSL 环境新建标签页默认也创建在 WSL 域内不想自动连接时同样可以手动wezterm connect wsl。验证与排障怎么确认连接真的通了连不通时按下面这张对照表从下往上排查能覆盖绝大多数情况现象可能原因处理connect报找不到域配置里的name拼写与命令行不一致对照.wezterm.lua逐字核对SSH 域连不上远端没装 WezTerm 或版本差异过大两端wezterm --version核对WSL 连接立即断开把 WSL 2 当 WSL 1 用了确认发行版运行模式或等待 WSL 2 互通窗口关了但会话又没了服务器进程被杀如重启用ps aux \| grep wezterm-mux-server确认它在跑两个日常小技巧想手动停止后台服务器找到wezterm-mux-server进程并结束它即可daemonize模式下它会在运行时目录留下 pid 文件可以据此精确定位给ActivateCommandPalette绑一个快捷键如Cmd/CtrlShiftSpace后随时可以调出命令面板输入Connect to Domain之类的关键字切换域不用记命令。延伸阅读多路复用机制与域模型的完整说明docs/multiplexing.md其中 TLS 域一节讲了跨网长连的 bootstrap 流程普通 SSH 连接非域模式的用法docs/ssh.md想深入服务器行为可以看看 wezterm-mux-server/ 源码入口在main.rs。多路复用的本质是把会话的生命周期从窗口手里拿回来——本地、远端、WSL 不过是一个wezterm connect的目标不同。今晚就可以先做一件小事给.wezterm.lua加上开头那两行配置关一次窗口再开一次亲眼确认标签页还在。【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/wezterm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考