内容预览 ≧∀≦ゞ
- 跟着红队笔记学习 tmux:渗透测试中的多终端利器
- 进入 tmux 前的准备
- tmux 概念简介
- tmux 基础操作
- 会话管理命令
- 会话管理快捷键
- 会话内和会话外命令的区别
- tmux 窗口和面板管理
- 新建和管理窗口
- 分割窗口为面板
- 切换面板
- 面板放大与恢复
- 调整面板大小
- 关闭面板
- 分屏状态下的历史查看与内容复制问题
- tmux 配置文件快速上手
- 总结
跟着红队笔记学习 tmux:渗透测试中的多终端利器
在渗透测试过程中,我们常常需要同时监控多个终端,每个终端可能都在执行不同的任务:有的用来查看信息,有的用于连接服务器,有的负责监听端口,等等。tmux
是一个强大的终端复用工具,能够帮助我们高效地管理这些任务。它支持将多个会话和窗口整合在一个界面中,支持多种分屏布局,还能够保持会话独立。此外,tmux
自带于 Kali Linux 中,因此,其非常适合渗透测试环境。本文将带你系统学习 tmux 的核心概念与操作技巧,带你快速上手。
进入 tmux 前的准备
在启动 tmux 会话之前,建议先进入目标工作目录。因为在 tmux 内新建的所有窗口和面板都会继承启动时的工作目录,这样可以减少手动切换路径的繁琐操作。
tmux 概念简介
tmux
的工作机制可以分为三大部分:会话(Session)、窗口(Window)和面板(Pane)。每个部分都有其独特功能和作用:
- 会话(Session):一个独立的工作实例。每个会话可以包含多个窗口,且可以独立于其他会话运行。即使 SSH 连接断开,tmux 也能保持会话的完整状态,保障程序不会中断。重新连接时,只需恢复会话即可。
- 窗口(Window):会话中的窗口类似于多标签页,允许在同一会话中分割出不同的任务区。每个窗口可以包含多个面板,并且可以随时切换。
- 面板(Pane):窗口中的分屏区域,每个面板都可以执行不同的任务。你可以在一个窗口中分割出多个面板,以便在同一屏幕下查看和操作多个任务。
会话 > 窗口 > 面板
tmux 基础操作
在 tmux
中,管理会话是核心功能之一,掌握会话管理能极大提高操作效率。以下是 tmux
常用的会话管理命令和快捷键:
会话管理命令
-
新建会话:
- 命令:
tmux new -s <会话名> [-n 窗口名]
- 说明:新建一个指定名称的会话,可选参数
-n
用于指定初始窗口的名称。 - 使用场景:在终端外新建
tmux
会话,便于将不同任务组织在独立的会话中。
- 命令:
-
恢复会话:
- 命令:
tmux attach -t <会话名>
或tmux at -t <会话名>
- 说明:恢复到已存在的会话,让你重新回到之前的工作环境。
- 使用场景:当暂时离开会话后,通过该命令继续之前的工作,避免重新配置窗口和窗格。
- 命令:
-
列出所有会话:
- 命令:
tmux ls
- 说明:查看当前所有的会话及其状态,显示会话名、窗口数等信息。
- 使用场景:有多个会话时,列出所有会话帮助定位特定会话的名称和状态。
- 命令:
-
删除会话:
- 命令:
tmux kill-session -t <会话名>
- 说明:关闭指定的会话,释放资源。
- 使用场景:在会话任务完成后手动删除不再需要的会话。
- 命令:
-
关闭所有会话:
- 命令:
tmux kill-server
- 说明:彻底关闭
tmux
服务及所有会话。 - 使用场景:退出
tmux
前清理所有会话,非常适合不再需要保持任何会话时使用。
- 命令:
会话管理快捷键
在 tmux
会话内有大量的快捷键,所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl + b
,按下后会进入命令模式。以下是一些常用的会话管理快捷键:
- 分离当前会话:
Ctrl + b
后按d
或者输入tmux detach
- 将当前会话转为后台运行,允许你暂时离开而不终止会话,稍后可以通过恢复会话继续工作。
- 重命名当前会话:
Ctrl + b
后按$
- 弹出重命名提示,允许你为当前会话指定一个更易于识别的名称。
- 列出所有会话:
Ctrl + b
后按s
- 显示当前所有会话的列表,便于选择并切换到其他会话。
这些快捷键中第一个比较常用,其他的相对比较少用。
会话内和会话外命令的区别
-
会话外命令:通过在终端中直接使用
tmux
命令(如tmux new -s <会话名>
)新建、恢复、删除会话。这类命令通常用于管理会话的创建和整体操作。 -
会话内命令:在进入
tmux
会话后,通过前缀键Ctrl + b
激活tmux
的命令模式,举例来说,帮助命令的快捷键是Ctrl+b ?
。它的用法是,在tmux
窗口中,先按下Ctrl+b
,再按下?
,就会显示帮助信息。按下ESC
键或q
键,就可以退出帮助。会话内命令一般用于管理窗格、窗口切换等会话内操作。
在掌握了上述基础操作后,大家可能会好奇,如何实现如图所示的终端布局效果呢?别急,接下来让我们进入 tmux 的进阶操作部分——窗口与面板管理。
tmux 窗口和面板管理
在 tmux
中,窗口和面板是实现多任务处理的核心。它们允许用户在同一会话中高效地分隔和管理不同的任务或项目。以下是窗口和面板管理的一些方法和技巧:
新建和管理窗口
tmux
允许在同一会话中创建多个窗口,这非常适合分隔不同的任务或项目。以下是一些常用的窗口管理快捷键:
-
新建窗口:
Ctrl + b
,c
- 这个命令会在当前会话中创建一个新的窗口,便于开展新任务。
-
重命名窗口:
Ctrl + b
,,
- 此操作允许用户为当前窗口指定一个更易于识别的名称,适合用于标记任务或项目。
-
切换窗口:
- 下一个窗口:
Ctrl + b
,n
- 上一个窗口:
Ctrl + b
,p
- 指定窗口:
Ctrl + b
,数字
- 选择窗口列表:
Ctrl + b
,w
- 显示所有窗口的列表,便于选择并切换到特定窗口。
- 下一个窗口:
-
删除窗口:
Ctrl + b
,&
分割窗口为面板
虽然 Kali Linux 自带的终端也支持分屏功能,但 tmux
的分屏功能更加灵活和强大。通过分割窗口,可以在同一屏幕中显示多个任务,支持以下分割方式:
- 水平分割:
Ctrl + b
后按"
- 垂直分割:
Ctrl + b
后按%
为了更方便地记忆,可以将分割命令重新绑定为更直观的快捷键:
bind | split-window -h # 水平分割
bind - split-window -v # 垂直分割
只需按 Ctrl + b
后再按 |
或 -
,即可快速在窗口内进行水平或垂直分割。
建议布局:可以先水平分割,再进行垂直分割,根据实际工作需要灵活调整面板布局,形成符合个人操作习惯的分屏风格。
切换面板
在多个面板间的切换操作简便而高效:
- 方向键切换:
Ctrl + b
,然后使用方向键选择目标面板 - 快速切换:
Ctrl + b
,o
- 在面板间循环切换,适合快速浏览各个面板。
使用
o
快捷键切换面板,可避免使用方向键,尤其适合希望保持手指在主键盘区域的用户。
面板放大与恢复
当某个面板需要更大空间进行操作时,可以将其放大为全屏,再切换回来:
- 放大/恢复面板:
Ctrl + b
,z
- 这个命令可以让当前面板填满整个窗口,便于专注于重要任务。
调整面板大小
在多面板布局下,调整面板的大小以满足不同的工作需求:
-
常规调节:
Ctrl + b
,Alt + 方向键
-
精细调节:
Ctrl + b
,Ctrl + 方向键
关闭面板
对于不再需要的面板,可以快速关闭,以保持工作区的整洁:
-
关闭面板:在目标面板中输入
exit
并回车,即可关闭当前面板。 -
快速关闭当前面板:
Ctrl + b
,x
- 此操作将弹出确认对话框,确认后即可关闭当前面板。
通过上述管理窗口和面板的技巧,tmux
用户能够高效地进行多任务处理,提升工作效率。
分屏状态下的历史查看与内容复制问题
在分屏状态下,查看屏幕上方的历史信息或复制内容时,直接滚动鼠标往上可能无法生效,可以通过以下操作实现复制:
-
鼠标复制:按住
Shift
键并用鼠标选择内容,选中后可右键或使用Ctrl + Shift + C
完成复制。 -
全屏复制:当窗口内存在多个面板时,复制操作可能会包括其他面板内容。为避免这种情况,可先将目标面板放大(
Ctrl + b
,z
),执行复制后再按Ctrl + b
,z
恢复面板原状。
此外,tmux
还带有功能丰富的复制模式,受限于篇幅本文不再详细展开,感兴趣的小伙伴可以自行探索这一功能。
tmux 配置文件快速上手
在使用 tmux
时,通过合理配置可以显著提升日常体验。tmux
的配置文件位于 ~/.tmux.conf
,我们可以将常用设置写入该文件来持久优化使用体验。
进入 tmux
后,按下 <prefix>
键(默认 Ctrl + b
,或自行配置的其他前缀),然后按大写 R
即可重新加载配置文件。也可以直接运行以下命令:tmux source ~/.tmux.conf
下面是我的推荐配置文件,供大家参考:
# 修改前缀键为 Control-A
set -g prefix C-a
# 窗口和窗格编号从 1 开始,符合习惯
set -g base-index 1
set -g pane-base-index 1
# 美化当前窗口风格,便于识别活动窗口
set -g window-status-current-format '🐹#{window_index}:#{b:pane_current_path}'
# 启用鼠标支持,方便面板切换和调整
set -g mouse on
# 删除窗口后自动重新编号,保持编号连续
set -g renumber-windows on
# 禁止自动命名窗口,确保名称稳定
setw -g automatic-rename off
setw -g allow-rename off
# 使用 vi 键位进入复制模式,适合习惯 vi 的用户
setw -g mode-keys vi
# 添加窗口分割快捷键
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# 设置终端为 256 色
set -g default-terminal "screen-256color"
# 使用 vim 风格的上下左右键选择窗格
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
在修改前缀键时,请谨慎选择,确保避免与常用快捷键冲突,以免影响日常操作。
总结
tmux
是一款强大的终端复用工具,适合需要多任务处理的渗透测试人员。掌握 tmux 的基础操作和分屏技巧,不仅能提高渗透测试的工作效率,还能优化工作流程。如果你还没有尝试过 tmux,不妨跟随本文一起动手实操一次,感受一下它的强大功能。