netcat Cheatsheet - Network Debugging
网络排障必备的 Netcat 命令都在这里了,从端口扫描到文件传输,按场景分类整理,排障直接复制。
Back to SysOps连接测试与端口扫描 6
nc -zv host 80检测目标 80 端口是否开放,最常用
nc -zv host 80 443 8080检查多个指定端口
nc -zv host 1-1000扫描 1-1000 端口范围
nc -vz -w 2 host 80带 2 秒超时检测端口
nc -uz host 8080UDP 模式检测端口
nc -4 host 80强制使用 IPv4 连接
文件与数据传输 6
nc -l 9999 > received.txt接收端:监听并保存到文件
nc host 9999 < file.txt发送端:发送文件
tar czf - dir | nc host 9999发送端:打包并发送目录
nc -l 9999 | tar xzf -接收端:接收并解压
dd if=/dev/sda | nc host 9999发送端:传输磁盘镜像
nc host 9999 | pv > disk.img接收端:带进度条接收镜像(需 pv)
端口监听 5
nc -l 8080监听本地 8080 端口等待连接
nc -l -p 8080监听(老版本 nc 语法,需 -p)
nc -l -k 8080保持监听,支持多个连接(BSD 版)
nc -lk 8080同上,合并写法
nc -lu 9090监听 UDP 端口
代理与转发 3
nc -l 1234 | nc target 80简易 TCP 代理转发
mkfifo pipe; nc -lk 8080 < pipe | nc target 80 > pipe双向端口转发(管道方式)
nc -l 1234 -e /bin/bash将 shell 绑定到端口(GNU nc,仅限授权测试)
Banner 抓取与协议调试 5
echo "" | nc host 22抓取 SSH 服务版本号
echo "" | nc host 25抓取 SMTP 服务 Banner
printf "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80发送原始 HTTP 请求
echo -e "GET / HTTP/1.0\r\n\r\n" | nc example.com 80查看 HTTP 响应头
nc host 3306抓取 MySQL 服务 Banner
高级选项与参数 7
-v / -vv详细输出 / 更详细输出
-z零 I/O 模式,仅扫描不发送数据
-w 2连接超时 2 秒
-k保持监听,支持多个连接(BSD 版)
-s 192.168.1.1指定源 IP 地址
-p 12345指定本地源端口
-u使用 UDP 协议
替代工具与对比 4
ncat host 80Nmap 的 ncat,支持 SSL 和访问控制
ncat --ssl host 443ncat 加密连接,替代明文 nc
socat - TCP:host:80socat 功能更强的替代,支持更多协议
nc --version查看 nc 版本,区分 BSD/GNU/OpenBSD 版
💡 Tips
- macOS 自带的 nc 是 BSD 版本,参数和 GNU ncat 不同,排障时注意区分。
- 端口扫描仅用于授权范围内的网络排查,未经授权扫描属违规行为。
- nc 传输不加密,敏感数据不要直接用 nc 传,走 SSH 或 TLS。
- OpenBSD 版 nc 不支持 -e 参数,需要绑定 shell 时用 ncat 或 socat 替代。
- 传输大文件时发送端用 pv 显示进度:pv file.txt | nc host 9999。
- 做端口转发推荐用 socat 或 ncat,功能更完善且支持持久连接。