nc 命令介绍

目录

  学习任何工具都是为了解决实际的问题,所以我们用实际的问题来学习 nc 这个命令。至于命令中参数的意思自己去查吧。

问题

如何将远程主机中一个很长的文件内容拷贝到本地的剪切板中?

#主机 A
root]# nc -l 6666 <test.txt

#主机 B
admin]$ nc 172.16.166.35 6666 | xclip

#这样主机 A 的 test.txt 文件的内容就复制到了主机 B 的剪切板里了

假设 A 主机上有 100G 数据需要备份到 B 主机,A 数据剩余磁盘 10G,B 主机剩余磁盘 90G,如何操作?

#明显你不能把 100G 的数据直接 scp 到 B 主机,那压缩后 scp 呢,明显 A 的磁盘空间又不够。
#这时容易想到能不能一边用网络传输,一边压缩数据呢。哈哈 nc 就可以方便的做到。
#主机 A
root]# tar czf - test.txt test1.txt |nc -l 1234

#主机 B
admin]$ nc  172.16.166.35 1234 > test.tar.gz 
#这样做的缺点是你没法知道什么时候结束,不过你可以通过抓包(tcpdump)大致的检查是否结束传输了

如何检查一个服务器的某个端口是否开启?

jimila@CDYJY-JINGML:~$ nc -v -z 115.28.139.41 80
Connection to 115.28.139.41 80 port [tcp/http] succeeded!

对于某些修改了 ssh 端口的服务器我们该如何找到 ssh 服务端口?

#so easy 通过指定范围的端口扫描,你可以指定 1-65535 这样就没有遗漏了
jimila@CDYJY-JINGML:~$ nc -v -z -w2 115.28.139.41 1-23
nc: connect to 115.28.139.41 port 1 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 2 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 3 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 4 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 5 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 6 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 7 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 8 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 9 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 10 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 11 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 12 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 13 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 14 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 15 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 16 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 17 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 18 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 19 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 20 (tcp) failed: Connection refused
nc: connect to 115.28.139.41 port 21 (tcp) failed: Connection refused
Connection to 115.28.139.41 22 port [tcp/ssh] succeeded!
nc: connect to 115.28.139.41 port 23 (tcp) failed: Connection refused

nc 如何检查一个 UDP 端口是否开放?

nc -uvz 192.168.1.109 2000
#如果不通测试将不会有任何输出
#如何显示成功,其实不一定真的代表是成功的
#nc 检查的原理是如果发出去的 UDP 能收到 ICMP 的报文就表示没不通,没收到就表示是通的,在有些禁止了 ICMP 的环境,不一定准确.
#对于 TCP 的检查需要注意的是有时 nc 不能检查出防火墙,原因是很多防火墙都发送双向的 reset 包,但是 nc 却是发了 syn 马上 fin 了.

nc 如何实现简单的聊天?

nc 如何实现远程执行 shell?