用 3 大場景實(shí)戰(zhàn):本地、SSH 與 WSL 會話管理指南)
WezTerm 多路復(fù)用 3 大場景實(shí)戰(zhàn)本地、SSH 與 WSL 會話管理指南【免費(fèi)下載鏈接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust項(xiàng)目地址: https://gitcode.com/GitHub_Trending/we/weztermWezTerm 是一個(gè)用 Rust 編寫、GPU 加速的跨平臺終端模擬器內(nèi)置基于域Domain的多路復(fù)用能力本地 Unix 域讓會話脫離窗口獨(dú)立存活SSH 域把同一套體驗(yàn)搬到遠(yuǎn)程服務(wù)器。本文用三個(gè)由近及遠(yuǎn)的場景給出每個(gè)場景的最小配置和一條驗(yàn)證命令幫你把 WezTerm 會話管理跑起來。一張表看懂三種域域類型本質(zhì)前置條件典型場景本地域 Local窗口內(nèi)標(biāo)簽頁的直接管理無開箱即用日常本地終端Unix 域本機(jī)后臺wezterm-mux-server進(jìn)程經(jīng) Unix 套接字連接同一臺機(jī)器關(guān)窗不丟會話、WSL 橋接SSH 域遠(yuǎn)程主機(jī)上的 mux 守護(hù)進(jìn)程SSH 作為傳輸通道遠(yuǎn)端裝好同版本 WezTerm遠(yuǎn)程服務(wù)器長期會話可以把域理解為一個(gè)獨(dú)立于窗口的會話容器它由后臺服務(wù)器進(jìn)程承載窗口只是客戶端。關(guān)掉所有窗口容器還在重新連接原樣接回。場景一本地會話不丟 —— 本地域最小配置解決的問題你正在跑一個(gè)長任務(wù)手滑把窗口關(guān)了。本地默認(rèn)域只管理窗口內(nèi)的標(biāo)簽窗口關(guān)了就沒了而 Unix 域由后臺服務(wù)器承載窗口關(guān)閉后會話繼續(xù)運(yùn)行隨時(shí)可以重連。最小配置寫入~/.wezterm.luaconfig.unix_domains { { name unix }, } -- 啟動時(shí)自動等價(jià)于執(zhí)行 wezterm connect unix config.default_gui_startup_args { connect, unix }保存后重啟 WezTerm啟動即連接到名為unix的域需要時(shí)也可手動wezterm connect unix接入。馬上驗(yàn)證關(guān)掉所有 WezTerm 窗口然后執(zhí)行下面兩條命令。$ wezterm connect unix $ wezterm cli list前者重連并看到原會話后者列出當(dāng)前域下所有窗口、標(biāo)簽和窗格確認(rèn)會話仍在服務(wù)器側(cè)存活。另外按CtrlShiftSpace打開命令面板輸入Connect to Domain可以在圖形界面里切換要接入的域不必記命令。遠(yuǎn)端回顯有延遲時(shí)可給域加一行l(wèi)ocal_echo_threshold_ms 10啟用本地預(yù)測回顯。場景二遠(yuǎn)程服務(wù)器一鍵接入 —— 復(fù)用 ssh config 自動生成域解決的問題遠(yuǎn)程服務(wù)器上跑的編譯、訓(xùn)練任務(wù)不希望隨斷連中斷又不想為每臺機(jī)器單獨(dú)寫配置。SSH 域在遠(yuǎn)端自動拉起 mux 守護(hù)進(jìn)程會話存活的邏輯和本地 Unix 域完全一致只是通道換成了 SSH。方式一為常用服務(wù)器顯式配置一個(gè) SSH 域config.ssh_domains { { name prod-server, remote_address 192.168.1.100, username devops, }, }配置生效后運(yùn)行wezterm connect prod-server即可遠(yuǎn)端需先安裝同版本的 WezTerm。方式二更省事WezTerm 會自動讀取~/.ssh/config為每個(gè) host 生成兩個(gè)域——SSH:主機(jī)名普通 SSH和SSHMUX:主機(jī)名多路復(fù)用。已有 SSH 配置的用戶直接連復(fù)用域$ wezterm connect SSHMUX:staging一條命令接入 staging 機(jī)器的后臺會話若想接到已打開的 WezTerm 里作為新標(biāo)簽則用wezterm cli spawn --domain-name SSHMUX:staging。場景三Windows Linux 雙系統(tǒng) —— WSL 橋接解決的問題Windows 上想要原生窗口的鼠標(biāo)和剪貼板體驗(yàn)程序卻跑在 WSL 里。Unix 域正好橋接兩者WSL 內(nèi)跑服務(wù)器Windows 端通過wsl命令拉起。注意目前僅 WSL 1 支持 AF_UNIX 互操作WSL 2 暫不可用。WSL 內(nèi)的~/.wezterm.lua把套接指到 Windows 可見的路徑并跳過權(quán)限檢查NTFS 權(quán)限永遠(yuǎn)不正確config.unix_domains { { name wsl, socket_path /mnt/c/Users/USERNAME/.local/share/wezterm/sock, skip_permissions_check true, }, }Windows 端的~/.wezterm.lua用serve_command讓 WezTerm 通過wsl啟動服務(wù)器config.unix_domains { { name wsl, serve_command { wsl, wezterm-mux-server, --daemonize }, }, } config.default_gui_startup_args { connect, wsl }兩端都保存后從開始菜單啟動 WezTerm直接落在 WSL 標(biāo)簽里新標(biāo)簽也會自動創(chuàng)建在 WSL 中。常用命令速查命令作用wezterm connect unix連接本地 Unix 域wezterm connect SSHMUX:主機(jī)名連接由 ssh config 自動生成的遠(yuǎn)程復(fù)用域wezterm cli list列出當(dāng)前域的窗口、標(biāo)簽、窗格wezterm cli spawn --domain-name 域在當(dāng)前 GUI 中新開標(biāo)簽接入指定域wezterm cli get-text提取當(dāng)前窗格文本替代手動復(fù)制wezterm cli split-pane在當(dāng)前窗格右側(cè)/下方分屏wezterm cli kill-pane關(guān)閉當(dāng)前窗格wezterm cli list-clients列出連接到該域的所有客戶端子命令的完整清單見 cli 文檔。三個(gè)常見坑遠(yuǎn)端沒裝 WezTerm。SSH 域依賴遠(yuǎn)端啟動 mux 守護(hù)進(jìn)程先在遠(yuǎn)端執(zhí)行wezterm --version確認(rèn)已安裝且版本兼容否則連接會靜默失敗。套接字權(quán)限檢查報(bào)錯(cuò)。多用戶機(jī)器上skip_permissions_check應(yīng)保持默認(rèn)關(guān)閉確需開啟如 WSL 的 NTFS 場景時(shí)注意該開關(guān)會讓任何本機(jī)用戶都能接管你的會話。WSL 2 連不上。AF_UNIX 跨系統(tǒng)互操作僅 WSL 1 支持WSL 2 用戶可參考 multiplexing 文檔 中的proxy_command方案用 socat 之類工具中轉(zhuǎn)套接字。小結(jié)域是獨(dú)立于窗口的會話容器服務(wù)器進(jìn)程不退出會話就不會丟本地、遠(yuǎn)程、WSL 三種場景共用同一套connect/cli操作模型wezterm connect 域名接入會話wezterm cli 子命令操作會話多用戶機(jī)器上不要關(guān)閉套接字權(quán)限檢查進(jìn)階入口需要跨網(wǎng)安全訪問時(shí)看 multiplexing 文檔 中的 TLS Domains 一節(jié)客戶端config.tls_clients 服務(wù)端config.tls_servers經(jīng) SSH 引導(dǎo)獲取證書想調(diào)整 ssh config 自動生成域的行為參考 wezterm.default_ssh_domains()?!久赓M(fèi)下載鏈接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust項(xiàng)目地址: https://gitcode.com/GitHub_Trending/we/wezterm創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考