使用 Tmux 防止远程SSH丢失
背景
一般外网链接家庭电脑使用的是跳板机,使用的命令如下 ssh -J ubuntu@xx.xyz zbc@127.0.0.1 -p 8888 ,但是运行超过一定时间如3小时,会有自动断开问题。

这是一个非常常见的问题,通常是因为网络中间设备(如路由器、防火墙)在连接空闲一段时间后(没有任何数据传输)切断了连接。
解决方案
方案一:使用 Tmux(推荐,彻底防止工作丢失)
Tmux 可以解决这个问题吗? 可以。 Tmux 不会阻止 SSH 断开,但它能保证即使 SSH 断开了,你在服务器上运行的程序、编辑器、终端窗口都不会关闭。 当你重新通过 SSH 连接上去后,只需一条命令就能瞬间找回之前的所有工作状态。
操作步骤:
-
安装 Tmux (在你的远程目标机器上,即你登录进去后的那台机器):
sudo apt update sudo apt install tmux -
使用 Tmux:
- 登录远程服务器后,输入
tmux进入 Tmux 会话。 - 在里面正常工作(跑代码、编辑文件)。
- 如果 SSH 断开了(出现 Broken pipe):
- 重新执行 SSH 命令登录。
- 输入
tmux attach。 - 你会发现刚才的界面、光标位置、运行的程序全都原封不动地回来了!
- 登录远程服务器后,输入
方案二:优化 SSH 配置(防止自动断开)
除了用 Tmux 保护现场,你还可以通过发送“心跳包”来告诉服务器和中间路由“我还在线”,从而防止 Broken pipe 错误。
方法 A:命令行参数(临时生效)
在你的 SSH 命令中加入 -o ServerAliveInterval=60。这意味着客户端每 60 秒会向服务器发送一个空包,保持连接活跃。
ssh -o ServerAliveInterval=60 -J ubuntu@tx2.898311.xyz zbc@127.0.0.1 -p 6033方法 B:修改配置文件(永久生效,推荐)
在你的本地电脑(发起 SSH 的那台 Ubuntu)上,编辑或创建 ~/.ssh/config 文件:
-
打开文件:
nano ~/.ssh/config -
加入以下内容(针对所有主机生效,或者你可以只针对特定 Host):
Host * ServerAliveInterval 60 ServerAliveCountMax 3ServerAliveInterval 60:每 60 秒发送一次心跳。ServerAliveCountMax 3:如果发了 3 次心跳服务器都没回,才判定为断开。
总结建议
最稳健的做法是 双管齐下:
- 配置
~/.ssh/config加上心跳设置,尽量减少断连发生的概率。 - 养成在远程服务器使用
tmux的习惯,这样万一网络真断了(比如家里宽带抖动),你的代码和运行任务也不会丢。
是否想了解更多关于 Tmux 的快捷键(如分屏、多窗口)的使用技巧?
Tmux 的快捷键(如分屏、多窗口)的使用技巧
这是一个非常好的习惯!一旦你习惯了 Tmux,它会彻底改变你的终端工作流。
Tmux 的核心逻辑是:前缀键 (Prefix) + 命令键。
默认的前缀键是 Ctrl + b。这意味着你必须先按下 Ctrl 和 b,松开后,再迅速按下一个命令键。
以下是 Tmux 最常用、最实用的快捷键清单,专为提升效率整理:
1. 核心概念:分屏(Panes)
这是你提到的最想要的功能,可以在一个屏幕里同时看代码、监控日志和跑命令。
| 功能 | 快捷键操作 | 记忆技巧 |
|---|---|---|
| 左右分屏 | Ctrl+b 然后按 % | 键盘上的 % 看起来就像左右分开 |
| 上下分屏 | Ctrl+b 然后按 " | 键盘上的 " 位于中间,寓意上下分 |
| 切换光标 | Ctrl+b 然后按 方向键 | 上下左右切换焦点 |
| 关闭当前分屏 | Ctrl+b 然后按 x | 会提示确认,按 y 确认 |
| 最大化/恢复 | Ctrl+b 然后按 z | Zoom。想专心看某个分屏时非常有用! |
| 调整分屏大小 | Ctrl+b 然后按住 Ctrl+方向键 | (部分版本适用) 或按 : 输入 resize-pane |
2. 多窗口管理(Windows)
类似于浏览器的“标签页”,当一个屏幕塞不下太多分屏时使用。
| 功能 | 快捷键操作 | 记忆技巧 |
|---|---|---|
| 新建窗口 | Ctrl+b 然后按 c | Create new window |
| 切换窗口 | Ctrl+b 然后按 数字键 | 0 是第一个,1 是第二个… |
| 下一个窗口 | Ctrl+b 然后按 n | Next |
| 上一个窗口 | Ctrl+b 然后按 p | Previous |
| 重命名窗口 | Ctrl+b 然后按 , | 方便你标记这个窗口是干嘛的 (如 “server”, “logs”) |
3. 会话管理(Sessions)
这是解决“断线重连”的关键。
- 挂起(Detach):
Ctrl+b然后按d。- 这会让你回到原本的 SSH 命令行,但 Tmux 里的东西还在后台跑。
- 查看列表: 在终端输入
tmux ls。 - 恢复(Attach):
tmux attach(恢复最近的一个)tmux attach -t 0(恢复编号为 0 的会话)
4. 滚动查看历史 (Copy Mode)
新手最容易遇到的问题:“为什么我用鼠标滚轮滚不上去?” 因为 Tmux 默认接管了屏幕。
- 进入滚动模式:
Ctrl+b然后按[。- 现在你可以用键盘的
PageUp/PageDown或方向键查看之前的输出。
- 现在你可以用键盘的
- 退出滚动模式: 按
q。
💡 进阶:开启“鼠标模式” (强烈推荐)
对于 24.04 这种较新的系统,开启鼠标支持会让体验像现代终端一样丝滑。你可以直接用鼠标点击来切换分屏,或者用滚轮翻页。
如何开启:
-
在服务器上创建或编辑配置文件:
nano ~/.tmux.conf -
加入这一行:
set -g mouse on -
保存退出 (
Ctrl+O, Enter,Ctrl+X)。 -
如果是已启动的 Tmux,按
Ctrl+b然后输入:source ~/.tmux.conf生效,或者直接重启 Tmux。
现在,你可以直接用鼠标点击某个分屏来激活它,或者拖拽分屏边缘来调整大小了!