nmap在linux中非默认预装但可通过包管理器一键安装:debian/ubuntu/kali用sudo apt install nmap -y,centos/rhel 7及更早用sudo yum install nmap -y,8+版本及rocky/almalinux用sudo dnf install nmap -y,opensuse用sudo zypper install nmap,arch/manjaro用sudo pacman -s nmap;安装后运行nmap --version验证,若提示command not found可执行hash -r或重启终端。

nmap 不是默认预装工具,但绝大多数 Linux 发行版都能通过包管理器一键安装,无需编译或手动配置路径。关键在于选对命令、注意权限、避开过时参数。
不同发行版用哪个安装命令
别记错包管理器,否则会报 command not found 或 No package nmap available:
- Debian/Ubuntu/Kali:
sudo apt update && sudo apt install nmap -y - CentOS/RHEL 7 及更早:
sudo yum install nmap -y - CentOS/RHEL 8+、Rocky/AlmaLinux:
sudo dnf install nmap -y - openSUSE:
sudo zypper install nmap - Arch/Manjaro:
sudo pacman -S nmap
安装后运行 nmap --version 验证——如果提示 command not found,说明没装上或 shell 缓存未刷新,可试 hash -r 或重启终端。
扫描远程主机前必须知道的三个权限和网络前提
nmap 的很多功能依赖原始套接字(raw socket),普通用户只能做基础 TCP 连接扫描;要启用 -sS(SYN 扫描)、-O(OS 探测)、-sV(服务版本识别)等,必须加 sudo。
- 目标主机不能完全屏蔽 ICMP:否则
-sn(ping 扫描)可能漏掉存活主机 - 本地防火墙(如
ufw或firewalld)一般不影响出向扫描,但某些云服务器(如阿里云、火山引擎)默认限制出向 ICMP 或高频率 TCP 包,需检查安全组规则 - 避免在生产网段无授权使用
-A或全端口扫描(-p-),部分 IDS/IPS 会触发告警
nmap -sn 和 nmap -sS 的实际区别与选用场景
-sn 是“仅发现主机”,不发任何端口探测包,快且隐蔽;-sS 是半开 SYN 扫描,能确认端口状态但需要 root 权限。二者不是替代关系,而是分阶段使用:
- 先跑
sudo nmap -sn 192.168.1.0/24快速列出在线 IP,再挑重点目标深入 - 对单台主机做端口普查,用
sudo nmap -sS -p1-1000 192.168.1.10,比默认扫描更快(默认只扫 1000 个常用端口) -
-sT(TCP connect)不用 root,但易被日志记录,且速度慢——仅用于受限环境临时排查 - 别混用
-sn和-p:加了-p后-sn自动失效,nmap 会转为端口扫描模式
保存结果和避免命令被中断的实操细节
远程扫描常耗时数秒至数分钟,SSH 断连或终端关闭会导致进程终止。推荐组合使用输出重定向与后台控制:
- 保存为可读文本:
sudo nmap -sS -A 192.168.1.10 -oN report.txt - 同时输出到屏幕和文件:
sudo nmap -sS 192.168.1.10 -oN scan.log | tee /dev/tty - 后台运行并忽略挂起信号:
nohup sudo nmap -sS -p- 192.168.1.10 -oN fullscan.log & - 扫描中途想停?按
Ctrl+C即可,nmap 会自动保存已得结果(除非用了--resume续扫才需要指定文件)
真正容易被忽略的是:nmap 对同一目标多次扫描时,若中间有防火墙策略变更或服务重启,结果可能不一致——别拿单次扫描结果直接下结论,尤其涉及安全评估时。











