nc -zv 可快速检测远程端口连通性,不传数据、响应快;基础用法为 nc -zv ,配合 -w、-n、-t 参数更稳定;支持通过 shell 脚本批量检测多台服务器同一端口。

直接用 nc -zv 就能快速判断远程服务器端口是否开放,它不传数据、只测连通性,响应快、结果明确。
基础用法:检查单个端口
命令格式很简单:
nc -zv
例如检查 192.168.1.100 的 22 端口:
nc -zv 192.168.1.100 22
成功时输出类似:
Ncat: Connected to 192.168.1.100:22
失败时常见提示:
-
Connection refused(端口关闭或服务未监听) -
No route to host(网络不可达,可能是防火墙拦截或主机关机) -
Connection timed out(中间链路阻断,如安全组/iptables/云厂商ACL限制)
常用增强参数组合
实际使用中建议加几个参数提升稳定性和可读性:
-
-w 3:设置超时为 3 秒,避免卡住 -
-n:跳过 DNS 解析,直接走 IP,更快更可靠 -
-t:显式指定 TCP 协议(默认就是 TCP,但写上更清晰)
完整推荐命令:
nc -zvnw 3 192.168.1.100 8080
批量检查多个服务器或端口
如果要查一批机器的同一端口,比如所有服务器的 22 端口,可以配合 shell 脚本:
先准备一个 IP 列表文件 server-list.txt,每行一个 IP:
192.168.1.1<br>192.168.1.2<br>192.168.1.3
再运行循环命令:
while read ip; do echo "$ip:"; nc -zvnw 3 "$ip" 22; done
也能一次扫多个端口,比如 22、80、443:
for port in 22 80 443; do nc -zvnw 3 example.com "$port"; done
注意事项
确保已安装 netcat:
- RHEL/CentOS/Rocky/AlmaLinux 8+:
dnf install nc或yum install nc - Ubuntu/Debian:
apt install netcat
-z 是关键,它让 nc 不建立真实会话,只做连接探测;没有它,nc 会卡在等待输入状态。
如果返回 “Connection refused”,说明目标主机可达,但该端口没服务在监听;如果是 “No route to host” 或长时间无响应,问题更可能出在网络路径或防火墙上。











