导读:VPS玩家少则两三台、多则十几台机器。每次登录还在背IP、记端口、翻密码备忘?SSH一断线,编译到一半的进程直接没?多台机器的日志想同时盯着,只能开十几个窗口?这篇用两个工具解决全部问题:SSH config管登录别名,tmux管会话不掉线。都是系统自带或一条命令能装的工具,配完之后管理一堆小鸡像管理一台一样轻松。
一、SSH config:给每台机器起名字
先看痛点。多机直连的命令长这样:
ssh root@103.x.x.x -p 2222
IP要背、端口要记、密钥文件要指定,三台以上就开始痛苦。
编辑(或创建)本地的 ~/.ssh/config 文件,给每台机器写一段:
Host web1
HostName 103.x.x.x
Port 2222
User root
IdentityFile ~/.ssh/id_ed25519
Host db1
HostName 45.x.x.x
User ubuntu
保存后,登录变成:
ssh web1
scp传文件同样受益:
scp backup.tar.gz web1:/root/
机器越多,收益越大。给别名起有规则的名字(按用途、按地区),十几台机器也能闭眼登录。
二、进阶:跳板机一行配置
安全做得好的玩家会把机器藏在一台入口机后面,其余机器不暴露公网SSH。传统做法要两步登录,config里一行搞定:
Host web1
HostName 10.0.0.5
User root
ProxyJump bastion
ProxyJump指定跳板别名后,ssh web1 自动先连bastion再穿到内网机器,体验和直连完全一致。
三、别把鸡蛋放一个文件里:config拆分
机器多了以后单文件难维护,config支持Include指令:
Include ~/.ssh/hosts/*
把不同用途的机器配置拆成多个文件放进这个目录,主文件只留全局默认项。整理机器清单时再也不用在几百行里翻。
四、tmux:让会话不随断线消失
第二个痛点:SSH断线(网络抖动、合盖睡眠)时,正在跑的命令直接阵亡。编译、备份、下载,跑到90%挂掉是最疼的。
tmux的解法:把会话放在服务器上跑,断线只是暂时看不见,重连后原样恢复。
上手三板斧:
新建会话:
tmux new -s work
进去后正常敲命令。此时按 Ctrl+b 再按 d(先松开Ctrl+b再按d),会话被剥离,你安全退出SSH,服务器上的任务继续跑。
重连后找回会话:
tmux attach -t work
屏幕回到断线前的现场,任务还在跑、输出都在。
列出所有会话:
tmux ls
配合第四节的SSH别名,完整工作流是两条命令:
ssh web1
tmux attach -t work
这就是多机玩家的日常:两下键盘,回到每台机器的现场。
五、tmux多窗格:一块屏幕干两件事
会话内还可以分屏。常用三个快捷键(都是先按Ctrl+b松开,再按下一个键):
% 左右分屏;
双引号键 上下分屏;
方向键 在窗格间移动光标。
典型用法:左窗格盯实时日志 tail -f,右窗格敲命令重启服务,一块屏幕同时看输入和输出。 x 关闭当前窗格。
再进一步,把常用布局保存成tmux配置(~/.tmux.conf),每台机器复制同一份,所有小鸡的操作手感完全统一。
六、组合出完整工作流
把两个工具串起来,多机管理的完整姿势:
1. 所有机器写进 ~/.ssh/config,统一别名;
2. 长任务一律先进tmux再执行,断线零损失;
3. 服务器上常驻一个work会话,attach即回现场;
4. 配置文件本身放进Git仓库管理,换电脑十分钟恢复全部习惯。
顺带一提:这些配置的备份和同步,正好可以纳入本站之前讲的restic自动备份体系,把 ~/.ssh 和 ~/.tmux.conf 一起纳入备份清单,换机无忧。
结语
多机管理的关键不是更强大的监控面板,而是把登录和会话这两个高频动作优化到极致。SSH config解决怎么进得快,tmux解决怎么不断线,两个都是零成本工具,配一次受益终身。
机器超过三台还没用上这套组合的,今天就可以花二十分钟配置起来——这是回报率最高的一次运维投资。



