0x00 前言

参考Micro8系列第三十六课:https://micro8.gitbook.io/micro8/contents-1/31-40/36-jie-jue-vps-shang-ssh-diao-xian

0x01 Tmux

简介

Tmux是一个优秀的终端复用软件(Terminal multiplexer),类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行Tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机。是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。

会话与进程

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称”窗口”),在里面输入命令。用户与计算机的这种临时的交互,称为一次”会话”(session)

会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

为了解决这个问题,会话与窗口可以”解绑”:窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话”绑定”其他窗口。

Tmux 就是会话与窗口的”解绑”工具,将它们彻底分离。

  1. 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
  2. 它可以让新窗口”接入”已经存在的会话。
  3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
  4. 它还支持窗口任意的垂直和水平拆分。

类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。

基本用法

安装:

1
2
3
4
5
6
7
8
# Ubuntu 或 Debian
$ sudo apt-get install tmux

# CentOS 或 Fedora
$ sudo yum install tmux

# Mac
$ brew install tmux

安装完成后,键入tmux命令,就进入了 Tmux 窗口。

具体的Tmux用法参考:http://www.ruanyifeng.com/blog/2019/10/tmux.html

使用场景

Tmux的使用场景如下:

  1. 当某个程序在执行时一直是输出状态,需要结合nohup、&来放在后台执行,并且需要ctrl+c结束。这时可以打开一个Tmux窗口,在该窗口里执行这个程序用来保证该程序一直在执行中,只要Tmux这个窗口不关闭;
  2. 公司需要备份数据库时,由于数据量巨大,备份两三天弄不完,这时不小心关闭了终端窗口或误操作就前功尽弃了,使用Tmux会话运行命令或任务可以解决该问题;
  3. 下班后,需要断开SSH或关闭电脑,将运行的命令或任务放置后台运行;
  4. 关闭终端,再次打开时原终端里面的任务进程依然不会中断;
  5. 在渗透过程中,意外因网络等原因SSH掉线,Tmux可以恢复session会话;

常用操作命令

  • tmux new -s session1 新建会话
  • ctrl+b d 退出会话,回到shell的终端环境 //tmux detach-client
  • tmux ls 终端环境查看会话列表
  • ctrl+b s 会话环境查看会话列表
  • tmux a -t session1 从终端环境进入会话
  • tmux kill-session -t session1 销毁会话
  • tmux rename -t old_session_name new_session_name 重命名会话
  • ctrl + b $ 重命名会话 (在会话环境中)