
Kali Linux 对刚入门安全方向的朋友来说往往是从一个看着就高深莫测的终端开始的。很多人把最新版Kali装进虚拟机打开终端却不知道第一行命令该敲什么。我见过太多人一上来就急着学各种大型工具结果连最基本的文件导航和权限都搞不定后面全是坑。这篇文章我就挑出20个日常在Kali上使用频率最高的核心命令从文件操作、内容检索、权限控制到网络诊断、远程连接、系统监控和包管理挨个过一遍。每个命令我都会说清楚它解决什么问题、怎么用、有哪些容易踩的坑以及我在实验环境里总结的实操习惯。无论你是第一次装好Kali还是已经用了一阵子想补基础都能在这里找到可以直接照抄的用法。1. 内容整体设计与命令选型思路1.1 不是越全越好20个命令的筛选逻辑Linux命令有几百个但日常干活真正高频使用的其实不多。对我来说80%的操作就集中在20个命令上这二十个更像是“操作系统的手脚”。Kali虽然内置六百多个安全工具但每个工具的启动和调试都逃不开Shell基础目录要定位、文件要复制、权限要调整、进程要看、网络要测。你把这些基础命令吃透再去看那些大工具会发现底层思路全都通。另外需要说明像metasploit、burpsuite这类属于“工具箱”有自己独立的交互界面不是这次要聊的命令。这次只聊Shell里直接敲的那些基础命令。选择标准就三句话高频、通用、能解决实际问题。这20个命令覆盖了文件操作、文本处理、权限修改、压缩解压、网络诊断、远程连接、进程管理和软件包管理基本覆盖了你日常操作一台Linux机器的所有需求。1.2 准备你的Kali环境终端、Shell与帮助命令的妙用新版Kali默认登录用户是普通用户kali需要用管理员权限时敲sudo加命令。我建议日常就用普通用户需要装软件、看系统日志、管理服务时才用sudo这样即使误操作也不会因为root最高权限把整个系统搞垮。终端打开之后第一件事要养成两个习惯Tab键自动补全以及用man命令查帮助。man ls # 查看ls的完整手册 ls --help # 查看简洁帮助信息很多新手卡住就是不知道某个参数什么意思其实man手册全都有。另外Shell里有几个隐藏技能比如按上下方向键翻历史命令输入history查看所有历史记录。先用好这些基础能力后面的命令才顺利。一个小技巧不小心敲错一条很长的命令不要慌按CtrlA跳到行首CtrlE跳到行尾改一下回车就行。2. 文件操作与内容检索5个命令走遍目录2.1 pwd每一步都要知道自己在哪pwd是print working directory的缩写就是打印当前所在目录。听着太简单但实际用的时候你才知道它有多重要。尤其Kali里多个终端窗口来回切换很容易忘记自己到底在哪个路径结果把文件复制错了地方甚至删错东西。pwd # 输出类似 /home/kali还有一个少有人提但很有用的参数pwd -P。如果当前目录是通过符号链接访问的普通pwd显示的是链接路径加上-P之后会显示真实物理路径。我自己的习惯是在执行rm删除重要目录、或者执行会覆盖文件的命令之前先敲一下pwd确认自己不在根目录或家目录误删了东西。这步花不了一秒却能避免大事故。2.2 ls一个参数看穿目录所有细节ls用来列出目录内容是进入任何一个目录后第一个要敲的命令。但如果你只敲ls看到的就是一堆文件名很多隐藏文件根本不会显示。Kali大量工具和配置都放在隐藏目录里比如/home/kali/.bashrc、/home/kali/.ssh所以日常我基本都用组合参数。ls -lah-l表示长格式显示权限、属主、大小、修改时间-a表示显示所有文件包括隐藏的.开头的文件-h表示把文件大小显示成人类可读的K、M、G。比如ls -lah /etc能看到所有配置文件ls -l /etc/passwd则能顺带看清文件权限。这些都是后面chmod的基础因为你要先会看权限才谈得上改权限。2.3 cd在Kali的目录树里自由穿梭cd是切换目录的命令配合pwd和ls就是你操作整个文件系统的双脚。这里有几个点新手容易绕晕绝对路径和相对路径。绝对路径从/开始写比如cd /usr/share/wordlists意思是不管你现在在哪直接跳到那个目录相对路径则是基于当前目录计算比如当前在/home/kali输入cd tools就进入/home/kali/tools。cd ~ # 回到家目录 cd .. # 回到上一级目录 cd - # 回到上一个访问过的目录 cd ../.. # 向上跳两级我特别推荐cd -这个用法在Kali里经常需要在工具目录和配置文件目录之间来回切换一条cd -直接弹回去比重复敲完整路径快很多。另外一定养成按Tab补全的习惯cd /us然后按Tab自动补全成/usr既省时间又能避免手滑敲错路径。2.4 find精确制导的文件搜索在Kali里找文件用find是最稳妥的。比如你想找出系统里某个目录下所有配置文件或者找某个你忘记放哪的脚本都可以靠它。find /etc -name *.conf 2/dev/null find . -name config* -type f第一条命令在/etc下查找所有以.conf结尾的文件2/dev/null把没有权限访问的目录报错信息扔掉这样屏幕干净很多。第二条命令在当前目录查找所有名字以config开头的普通文件-type f限定只找文件不找目录。很多人不知道find还能按时间、大小、权限筛选。比如find / -mtime -1 -type f查找最近一天内修改过的文件排查异常文件时特别好用。不过我要提醒一点全盘find /非常慢还可能有权限报错尽量把搜索范围缩小到可能的目录。另外千万别写find / -name *.log -exec rm {} \;这种组合批量删除很容易误删风险极高宁可手动确认几遍。2.5 grep一把筛子捞进所有想要的文本grep是文本搜索界的王者能从一堆字符串里精确捞出你想要的那几行。单独用它不如把它和管道符|一起用更爽。管道的含义很简单把左边命令的输出塞给右边命令当输入。grep -i error /var/log/syslog | head -20 ps aux | grep -v grep | grep java第一条在系统日志里搜error-i忽略大小写head -20只显示前20行避免刷屏。第二条先ps aux列出所有进程再用grep -v grep排除掉grep命令本身最后筛选出Java相关进程。这一串配合是排查进程的标准操作。grep还有一些高频参数-r递归搜索目录、-n显示匹配行号、-v反向选择也就是排除匹配项。比如你想快速找出Kali所有配置文件里哪些提到过某个IP地址直接grep -rn 192.168.1.1 /home/kali/就能定位到具体文件和行号。日志排查、工具配置调整基本都离不开grep。3. 文件管理与权限控制5个命令守住数据安全3.1 cp复制文件也要懂策略cp用来复制文件或目录。听起来简单但有几个参数不记住真会翻车。复制目录必须加-r否则报错cp: omitting directory覆盖同名文件默认直接覆盖想要安全一点加上-i让它每次覆盖前询问你想保留文件属性比如时间戳、属主信息加-p。cp -r /home/kali/notes /home/kali/notes_backup cp -i /etc/hosts ~/hosts.bak我的实际体验是复制目录最容易漏了-r特别是从Windows习惯转过来的朋友。另外有一点容易被忽略从U盘或远程挂载目录复制文件到本地时文件属主、权限可能不是你想要的复制完顺手用ls -l确认一下。在Kali里拷贝可执行脚本到/usr/local/bin后如果提示没有权限通常还需要再补一个chmod x。3.2 mv移动和重命名是两兄弟mv既用来移动文件也用来重命名。其实重命名就是把文件移动到一个新名字本质相同。mv用法比cp野得多有个特别坑的细节如果目标路径是一个不存在的目录mv会把文件直接重命名成那个名字而不是移动进去。mv a.txt /tmp/b.txt # 把a.txt移动到/tmp并改名为b.txt mv a.txt /tmp/ # 把a.txt移动到/tmp保持原名第二种写法我强烈建议保留最后的斜杠这样一看就知道是移动目录不会误判。当你跨文件系统移动时mv底层其实是先复制再删除遇到大文件会慢一些而且需要目标分区有足够空间。如果你在Kali里想移动一个正在被进程使用的日志文件建议先备份而不是盲目移动否则会影响服务写入。3.3 rm删除命令的悬崖勒马技巧rm是大杀器Kali因为是安全测试系统操作对象经常是重要配置文件、靶场隔离环境一旦误删恢复成本极高。Linux没有回收站rm删除就是直接清掉很多恢复工具也不保证能找回来。rm file.txt # 删除单个文件 rm -r dir/ # 递归删除整个目录 rm -rf dir/ # 递归强制删除不提示我的建议是第一日常使用给rm设置一个别名在~/.bashrc里加一行alias rmrm -i让它每次删除前都问一句。第二删除前先pwd加ls看到当前目录确实没错了再动手。第三像rm -rf这种组合别轻易跟星号通配符一起用比如rm -rf *一个不留神就把当前目录全清了。还有一个更稳的方案装一个trash-cli工具把rm替换成trash-put删除的文件会进回收站还能恢复。虽然多一层保障但也要注意它本质还是在占用磁盘空间定期清理回收站。3.4 chmod权限数字化别再被Permission Denied卡住在Kali里几乎所有“Permission denied”报错都和权限有关。chmod就是用来修改文件权限的。Linux权限分三组属主、属组、其他用户每组又分读r4、写w2、执行x1三个数字加起来就能表达一组权限。chmod 755 script.sh # 属主全部权限属组和其他用户只读执行 chmod 644 config.conf # 属主读写其他只读 chmod x shell.sh # 给所有用户增加执行权限数字模式含义是设置权限时每个用户组的权限用一个数字表示比如7421就是读写执行541就是读和执行642就是读写。chmod 755是Kali里最常用的脚本权限相当于给自己全权限别人只能读和执行。我特别提醒一点SSH私钥文件权限必须设成600也就是只有属主可读写否则ssh客户端会直接拒绝加载报UNPROTECTED PRIVATE KEY FILE。如果你用chmod -R一次改整个目录要格外小心会把目录里不该改权限的系统文件也改了。3.5 tar打包压缩一步到位Kali里很多工具、脚本、靶场镜像都以.tar.gz格式分发tar命令就是来处理这些的。tar最早是磁带归档工具现在成了Linux下最常用的打包压缩方式。tar -czvf archive.tar.gz /home/kali/tools # 打包并压缩 tar -xzvf archive.tar.gz # 解压到当前目录 tar -tzvf archive.tar.gz # 查看压缩包内容不解压参数拆开看c创建、x解压、z使用gzip压缩、v显示过程、f指定文件名。创建和查看的顺序一定要记牢尤其是最后的f必须紧跟压缩包名字。实际经验是解压之前先用tar -tzvf看看包内结构可别一股脑解压结果文件散落在当前目录覆盖了一批同名文件。还有一个冷门但实用的技巧解压时加-C指定目标目录比如tar -xzvf archive.tar.gz -C /tmp可以把文件解压到指定目录保持工作区整洁。4. 网络诊断与远程操作5个命令搞定连接问题4.1 ping网络通不通先问它一句ping用来测试和目标主机之间的网络连通性是排查网络问题的第一命令。它会发送ICMP回显请求如果对方回包说明链路是通的。ping -c 4 192.168.1.1 ping -i 2 example.com不加-c的话ping会一直发下去直到你按CtrlC才停很多新手第一次敲ping就懵了怎么一直刷屏。所以日常建议加-c限定次数比如-c 4就是发4个包后自动结束。另外TTL值可以粗略判断对端系统类型Linux一般TTL 64Windows一般128不算精准但能参考。还有一个重要认知ping不通不代表目标一定离线。很多服务器、防火墙出于安全策略禁掉了ICMP直接丢弃ping包但HTTP、SSH等端口可能照样提供服务。所以在Kali里做网络探测不要单凭ping判断目标死活后面配合端口检查才靠谱。4.2 curl和接口对话的瑞士军刀curl是个多功能网络传输工具支持HTTP、HTTPS、FTP等一堆协议。在Kali里测试Web服务、调用API接口、查看响应头curl都是首选。curl -I http://example.com # 只看HTTP响应头 curl -O http://example.com/file.iso # 下载文件保持远程文件名 curl -X POST -d namekali http://localhost:8080/api-I发的是HEAD请求只拿响应头适合快速看服务状态、服务器软件版本、返回码是200还是404。-X指定请求方法-d传数据非常适合本地起个Web服务自测接口。我经常用curl -I检查Kali本机开的Web服务如果返回200说明服务正常如果返回000或者超时基本就是服务的锅跟网络没关系。注意curl下载文件时是大写-O小写-o是指定保存成自定义文件名别记混否则要么不保存要么保存到一个奇怪的名字。另外如果你只想看响应内容除去HTTP头可以加-s静默模式避免进度条干扰。4.3 wget把远程文件稳稳拉回本地wget和curl有点像但定位更偏向文件下载。Kali里装工具、拉靶场镜像、下载字典文件我更喜欢用wget因为它的下载体验更友好支持断点续传。wget -c https://example.com/bigfile.iso wget -O mylist.txt https://example.com/wordlist.txt-c断点续传是最实用的功能下载大文件断开了重新执行一遍能从断点继续不用重跑。-O可以把远程文件保存成指定名字。还有一个-r递归下载整个站点但我警告你别随便用会把目标站整站拉下来既可能触发法律问题也会让磁盘爆满。wget在Kali里的另一个常用场景是配合靶场环境下载一些训练专用的镜像或脚本。下载完成后建议先校验一下哈希值或者文件大小避免传到一半文件损坏。4.4 ssh安全远程登录的正确姿势ssh是连接到远程Linux服务器的标准方式Kali本身也内置了OpenSSH客户端和服务器。远程登录、传输管理命令、调试靶机全靠它。ssh kali192.168.1.10 ssh -p 2222 root192.168.1.10 ssh -i ~/.ssh/id_ed25519 userremote默认情况下ssh连接使用22端口前面加-p指定端口。再配合-i指定私钥文件就能实现免密登录。第一次连接时ssh会提示确认主机指纹输入yes后就把这台主机加入~/.ssh/known_hosts以后不会再问。我习惯把常用连接配置写到~/.ssh/config文件里比如这样Host lab HostName 192.168.1.10 User kali Port 22配置完之后直接敲ssh lab就能连上比敲一长串命令方便太多。还有一点必须强调私钥文件权限必须chmod 600否则ssh会拒绝加载。4.5 netstat一眼看尽本机端口和连接netstat用来查看网络连接、监听端口和路由表。在Kali里排查“我这个服务起来了没”“这个端口是不是被占了”“谁连到我的机器”靠它就够了。netstat -tulnp ss -tulnp-t表示TCP-u表示UDP-l只看监听中的-n显示数字地址和端口而不是解析域名-p显示对应进程的PID和名称。组合起来-tulnp就能把本机所有监听端口列得清清楚楚。比如你想确认8080端口有没有监听就执行netstat -tulnp | grep 8080新版Kali里netstat可能没装缺省推荐用ss命令参数几乎一样。如果你要排查“某个服务启动失败”先看端口是否被其他进程占用这种情况最常见。5. 系统监控与包管理5个命令掌控运行状态5.1 ps找出进程的身份证ps用来查看当前进程快照类似给系统拍一张照片记录下这个瞬间所有进程的状态。参数用得最多的是ps aux它会显示所有用户的进程详情包括CPU占用、内存占用、进程状态。ps aux ps aux | grep python3第一行会看到类似kali 12345 0.5 1.2 123456 7890 ? S 10:00 0:01 python3的输出分别说明用户、PID、CPU占用、内存占用、启动时间、运行命令等。我最常用的就是ps aux | grep 关键词迅速定位某个进程是否存在。排查问题时还会配合ps -ef看父子进程关系判断这个进程是谁启的。有一个坑直接grep python3会把自己的grep进程也算进去网上公认的写法是再加一个grep -v grep把grep进程本身排除掉。前文已经提到了这里再强调一下因为真有人在这里卡半天。5.2 top动态监督系统的每一个动作top是动态的它会持续刷新系统资源使用情况。进入Kali之后如果觉得系统卡顿或者风扇狂转我习惯先敲top看看是谁在抢资源。top进入top界面后上部显示系统负载、CPU使用率、内存总量和剩余量下面是一个动态刷新的进程列表按CPU占用从高到低排。在交互模式里按P键按CPU排序按M键按内存排序按K键可以直接输入PID杀掉进程按q退出。我建议新手先在top界面里多按几次P和M熟悉排序再按q退出这样对系统运行状况会有一个直观感觉。top最大的价值是看负载均衡和卡顿源头。如果某个进程CPU占用接近100%大概率是它在捣鬼。但top快照刷新频率偏高如果你更习惯可视化界面可以后续装一个htop操作更友好。5.3 kill按需终止进程但别用蛮力kill命令用于向进程发送信号最常见的就是终止它。要注意kill的默认行为是发送SIGTERM信号进程收到后可以执行清理然后退出如果进程卡死就需要用kill -9发送SIGKILL强制杀掉。kill 1234 # 默认发送SIGTERM正常终止 kill -9 1234 # 强制终止进程使用kill之前必须先用ps aux | grep 关键词查到准确的PID。我见过有人盲猜PID结果杀掉了系统关键进程导致桌面崩溃。PID是数字每次启动都不一样一定要现查现用。另外如果有进程在固化数据、写日志先用默认kill让它安全退出不要一上来就-9弄死它否则容易造成文件损坏。实在没反应-9再上。5.4 aptKali软件装的快与好apt是Debian系Linux的包管理工具Kali基于Debian装软件、卸载软件、更新系统全靠它。sudo apt update # 更新软件源索引 sudo apt upgrade # 升级所有可升级的软件包 sudo apt install nmap # 安装nmap sudo apt remove nmap # 卸载nmap顺序上装任何新软件之前先apt update否则容易碰到“找不到包”的报错。Kali是一个滚动更新的系统软件版本比较激进我习惯隔一段时间就更新一次但大面积升级前要确保网络稳定不然中断后可能出现依赖问题。另外有些包在官方源里不存在也不要硬搜先想想是不是名字有变化或者需要第三方源。我个人的实操心得是安装压倒性的工具集合时比如apt install kali-tools-top10会一下装很多组件磁盘占用和安装时间都要预留好。如果你只是临时用一下某个小软件用完及时卸载别把系统搞成一锅粥。5.5 systemctl把服务安排得明明白白systemctl管理系统服务在Kali里主要用来启动、停止、开机自启服务。比如你本地需要跑一个Web服务或者想让数据库开机自动启动都要和systemctl打交道。sudo systemctl start apache2 sudo systemctl stop apache2 sudo systemctl enable --now postgresql sudo systemctl status apache2start和stop分别启动、停止服务status查看服务状态看到active (running)说明正在跑inactive (dead)说明没启动。enable --now postgresql意思是设置开机自启同时立刻启动。很多人记不住enable和start的顺序其实enable --now是联合操作一步搞定。Kali里有些服务默认没有开放开机自启比如postgresql、metasploit用的数据库如果你在某个工具里遇到“数据库连不上”先看看systemctl status很可能就是没启动。这里也提醒旧系统的service命令在很多环境仍可用但新脚本尽量用systemctl。6. 常见问题与避坑经验跟着踩过坑的人少走弯路6.1 命令执行报错 “command not found”最常见的报错之一原因无非这么几种软件没装、命令拼错、当前用户不在PATH路径里。比如敲ifconfig报找不到因为新版Kali默认没有ifconfig需要装net-tools或用ip addr代替。解决思路是看这东西装没装没装就用apt补上装了但敲不对就检查拼写和大小写。Linux命令区分大小写LS和ls完全两回事。如果你手动下载了一个工具放到某个目录后直接输名字报找不到说明这个目录不在PATH环境变量里。要么把工具放到/usr/local/bin这种PATH目录要么用./tool加路径方式运行。刚入门时遇到这个问题很容易怀疑人生其实只是路径没找对。6.2 权限拒绝 Permission denied权限问题简直是新手劝退第一名。你访问/root目录普通用户就会报Permission denied解决办法是加sudo或者切换用户。但你执行一个脚本报Permission denied不一定是因为管理员权限也可能是脚本没有执行权限。检查一下ls -l如果权限位里没有x就需要chmod x script.sh。还有一个容易忽视的场景从Windows复制过来的脚本文件可能带了DOS换行符导致执行时报bad interpreter甚至无法运行。可以先执行sed -i s/\r$// script.sh把回车符清掉。权限问题看着烦其实都是规则清晰的小事养成ls -l检查文件的习惯就好。6.3 误删文件的急救与预防Linux没有回收站rm删了就删了这个观念一定要前置。我早期在实验机上跑过一条带星号的rm瞬间少了一堆配置文件那种冷汗直流的感觉记忆犹新。所以现在我的策略是三层保险。第一层给rm加别名让系统先问一句是不是真的要删。第二层安装并使用trash-cli删除的文件可以恢复。第三层删除重要目录之前先备份成tar包比如tar -czvf backup.tar.gz /important/dir。有了这层保险误删概率会降到很低。如果你不小心已经误删了立即停止对那块磁盘的写入操作然后试试ext4文件系统的恢复工具但成功率并不是100%所以预防远比抢救重要。6.4 网络命令卡住或超时的排查思路ping一直刷屏、curl长时间无响应、wget下载速度为零这类问题我几乎每周都会遇到。第一步先确认目标地址能不能解析用ping -c 4快速验证基本连通性基础通了再试具体端口。第二步检查是不是防火墙拦截Kali自带防火墙有时会拦截本地访问临时关掉试试。第三步注意命令本身是不是没有设置超时。curl可以加-m 10设置最多等10秒wget可以用--timeout10这样就不会无限期卡住。ping则可以永远加-c。网络问题的排查思路永远是从底层往上走先看链路通不通再看端口通不通最后看服务本身有没有问题。别一上来就怀疑服务器往往问题出在自己这边的小配置上。最后再分享一个我自己一直在用的习惯每次在Kali上下载或操作重要文件之前先把命令完整写在草稿里检查一遍尤其看清路径和有没有-rf这类危险参数。这些基础命令熟练之后不需要背但一定要形成肌肉记忆因为后面所有安全工具的使用都是在这些简单命令上叠起来的。把地基打扎实Kali用起来才会越来越顺手。