做网站运维的,一天不开SSH终端就不舒服。但SSH有几个老毛病:网络一断就连不上了、切个窗口再回来要重新连、长时间没操作自动断开。这几个问题困扰了我好几年,直到我把mosh、tmux、autossh三个工具配好,才算彻底解决。
mosh(Mobile Shell)。最大的卖点是断网不掉线。SSH走TCP,网络一断连接就没了。mosh走UDP,自带状态同步,你合上笔记本去楼下买杯咖啡,回来打开,终端还在,命令历史还在,甚至刚才的输出还在。安装很简单,服务端和客户端都装mosh包,然后mosh user@server代替ssh user@server。缺点是mosh默认不支持端口转发(-L那种),需要端口转发的场景还是得用SSH。
tmux。终端复用器,一个SSH连接里开多个窗口。我日常在一台服务器上同时看日志、编辑配置、跑命令,三个tmux面板并排显示,比开三个SSH连接清爽得多。最实用的功能是detach和attach:你detach掉tmux会话,断开SSH,第二天重新连上,tmux attach回去,所有窗口、历史、正在跑的任务全在。配合mosh用,基本不会丢任何工作状态。
tmux配置我只改了三行:改前缀键从Ctrl+B到Ctrl+A(按起来顺手)、开鼠标支持(鼠标点面板切换)、设状态栏显示CPU和内存。配置文件就20行,网上搜「tmux minimal config」一大堆。
autossh。自动重连的SSH隧道。有些场景你需要SSH隧道常开——比如本地连远程数据库、或者跳板机转发端口。普通SSH隧道网络一断就没了,autossh会在断开后自动重新建立。一条命令:autossh -M 0 -f -N -L 3307:localhost:3306 user@server,后台运行,断了自动重连,不需要你操心。
三个工具的配合:mosh连服务器,保证网络不稳也不会断;tmux管理多个终端会话,保证断连后状态不丢;autossh管SSH隧道,保证数据库/端口转发常在。这套组合用了两年,服务器管理效率至少提了一倍。
安全提醒:mosh默认用UDP 60000-61000端口,要在防火墙里放开。tmux的socket文件默认在/tmp下,多用户服务器上建议改路径或者设权限。autossh的自动重连如果配错了目标,会一直反复连,注意看日志别白跑。
还有一个小工具值得提:ssh-copy-id。把公钥拷到服务器上实现免密登录,一条命令搞定,比手动改authorized_keys方便。配好免密登录后,再把SSH的密码登录关掉,安全性上一个台阶。
还木有评论哦,快来抢沙发吧~