nc可快速扫描TCP端口:单端口用nc -zv host port,多端口空格分隔,范围扫描用起始-结束格式;加-n跳DNS、-w设超时、grep succeeded过滤结果,循环可批量检测。

用 nc(Netcat)扫描远程服务器的 TCP 开放端口,核心是利用它的“零 I/O 扫描”能力,不发送实际业务数据,只完成连接试探。它轻量、无需服务端配合,适合快速验证。
基础单端口检测
最常用也最可靠的方式,适用于确认某个关键端口(如 22、80、443)是否可访问:
- 命令格式:nc -zv 目标IP或域名 端口号
-
-z表示只做连接尝试,不传输数据;-v显示详细过程 - 成功时输出类似:Connection to example.com 22 port [tcp/ssh] succeeded!
- 失败常见提示:Connection refused(端口关闭或服务未运行),或Operation timed out(防火墙拦截或主机不可达)
批量扫描多个指定端口
适合检查一组常用服务端口,比如 SSH、HTTP、HTTPS、数据库等:
- 命令格式:nc -zv 目标IP 22 80 443 3306 5432
- 各端口号之间用空格分隔,nc 会依次尝试连接
- 建议加
-w 2设置超时(如nc -zvw 2 target 22 80),避免个别端口卡住拖慢整体速度
扫描连续端口范围
用于初步摸底,比如查常用服务端口段(1–1024)或某类应用端口区间:
- 命令格式:nc -zv 目标IP 起始端口-结束端口,例如 nc -zv 192.168.1.100 20-100
- 注意:范围过大(如 1–65535)耗时长、易被防火墙限速或记录,生产环境慎用
- 部分较新系统(如 CentOS 7+)中
-z可能失效,可改用 nc -v target port 替代
提升实用性的小技巧
让扫描更稳定、结果更易读:
- 加
-n跳过 DNS 解析,加快响应,尤其在目标域名解析慢或不可靠时:nc -znvw 2 10.0.0.5 22 - 用
grep succeeded过滤出真正开放的端口:nc -zv target 20-100 2>&1 | grep succeeded - 对多台服务器批量检测?写个简单循环:for ip in 192.168.1.{10..15}; do echo $ip; nc -zvw1 $ip 22; done











