一文让你熟练掌握 Linux 的 ncat(nc)命令

ncat是一款强大的网络工具,可用于监听、连接、端口扫描、数据传输和代理等多种用途。通过`ncat -l port_number`可以监听端口,`ncat IP_address port_number`则用于连接远程服务器。此外,ncat还能作为聊天工具、文件传输工具,甚至创建后门。了解并掌握ncat的使用对于系统管理和网络安全至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

ncat 或者说 nc 是一款功能类似 cat 的工具,但是是用于网络的。

它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。

ncat / nc 既是一个端口扫描工具,也是一款安全工具,还是一款监测工具,甚至可以做为一个简单的 TCP 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。

系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。 管理员还能用它作为客户端来审计 Web 服务器、telnet 服务器、邮件服务器等, 通过 nc 我们可以控制发送的每个字符,也可以查看对方的回应。

我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。

在本文中,我们会通过下面这些例子来学习如何使用 nc 命令。

二、监听入站连接

通过 -l 选项,ncat 可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:

ncat -l port_number

比如

ncat -l 8080

服务器就会开始在 8080 端口监听入站连接。

我们可以使用下面的 netstat 命令来验证这一点:

netstat -tunlp | grep 8081

结果: 

二、连接远程服务器

使用下面命令可以用 nc 来连接远程服务器,同时该命令可以验证连同性。

ncat IP_address port_number

我们来看个栗子:

ncat 192.168.1.100 8080

这会创建一个连接,连接到 IP 为 192.168.1.100 的服务器上的 8080 端口,然后我们就可以向服务器发送指令了。 

我们可以通过以下方式获得操作系统指纹标识

HEAD / HTTP/1.1

这会告诉我们使用的是什么软件来运行这个 web 服务器的 

3、将 nc 作为聊天工具 

nc 也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行:

ncat -l 8080

在远程客户端主机上运行: 

ncat 192.168.1.100 8080

之后开始发送消息,这些消息会在服务器终端上显示出来。

4、将 nc 作为代理 

nc 也可以用来做代理。比如下面这个例子

ncat -l 8080 | ncat 192.168.1.200 80

所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点 

mkfifo 2way
ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way

现在你可以通过 nc 代理来收发数据了。

5、使用 nc 拷贝文件

nc 还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了 ssh scp。 不过如果你恰好遇见个没有 ssh/scp 的系统的话, 你可以用 nc 来作最后的努力。

在要接受数据的机器上启动 nc 并让它进入监听模式:

ncat -l  8080 > file.txt

现在去要被拷贝数据的机器上运行下面命令:

ncat 192.168.1.100 8080 < data.txt

这里,data.txt 是要发送的文件。 


另外还可以之前传输打包的文件,栗子如下:

我们把 nc 的输出,使用管道交给 tar 命令处理。xfvz 和 cvfz 是一对参数,你应该猜到要怎么做了。(服务器)

nc -l 5879  | tar xfvz -

没错,客户端的代码与上面的是相反的。不过这次,我们的 nc 命令接收了打包的文件。

tar cfz - redis-5.0.5 |  nc -v 192.16.1.54 5879 

6、通过 nc 创建后门

nc 命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为:

ncat -l 10000 -e /bin/bash 

-e 标志将一个 bash 与端口 10000 相连。现在客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限:

ncat 192.168.1.100 10000 

7、通过 nc 进行端口转发 

我们通过选项 -c 来用 nc 进行端口转发,实现端口转发的语法为:

ncat -u -l  80 -c  'ncat -u -l 8080'

这样,所有连接到 80 端口的连接都会转发到 8080 端口。

这里面的 -u 指的是 udp 。

8、设置连接超时

nc 的监听模式会一直运行,直到手工终止。 不过我们可以通过选项 -w 设置超时时间:

ncat -w 10 192.168.1.100 8080

这会导致连接 10 秒后终止,不过这个选项只能用于客户端而不是服务端。

9、使用 -k 选项强制 nc 待命 

当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项 -k 我们可以强制服务器保持连接并继续监听端口。 命令如下:

ncat -l -k 8080

现在即使来自客户端的连接断了也依然会处于待命状态。

作者:Angel_Kitty
链接:https://www.imooc.com/article/250743
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

 

(SAW:Game Over!) 

<think>好的,我现在要解决用户关于如何在Linux上安装nc(netcat)命令的问题。首先,我需要确认用户可能的需求是什么。通常,用户遇到“nc命令未找到”的错误,说明系统没有安装netcat。我的任务是引导他们正确安装。 首先,我得考虑不同的Linux发行版,因为安装命令可能不同。常见的发行版有Debian/Ubuntu、CentOS/RHEL、Fedora、Arch Linux等。我需要分别列出这些系统的安装方法。 对于基于Debian的系统,比如Ubuntu,应该使用apt-get命令。需要提醒用户更新软件包列表,然后安装netcat-openbsd或者netcat-traditional。这里可能需要解释这两个版本的区别,但用户可能只需要基本的nc功能,所以推荐netcat-openbsd。 接下来是CentOS或RHEL系统,使用yum或dnf。这里需要注意,CentOS 8之后可能使用dnf,而旧版用yum。同时,安装的软件包名称是nmap-ncat,可能需要确认是否正确,因为有时候包名可能不同。 对于Fedora,使用dnf install nc或者nmap-ncat,同样需要确认包名是否正确。Arch Linux用户则使用pacman来安装gnu-netcat。 另外,可能需要提醒用户安装后如何验证,比如运行nc -h或者man nc来查看帮助文档。还有可能需要说明不同版本netcat的功能差异,比如OpenBSD版本和传统版本的不同参数,但用户可能暂时不需要深入这些细节。 还要检查是否有拼写错误,比如包名是否正确,命令是否正确。例如,是否在安装前需要sudo权限,这点要明确写出,避免用户权限不足的问题。同时,提示用户如果遇到问题,可以尝试搜索对应的软件包,比如使用apt search netcat来查找正确的包名。 最后,确保步骤清晰,分点列出,让用户容易跟随。可能还需要在最后给出一个验证安装成功的步骤,比如执行nc -h查看版本信息。如果有常见问题,比如安装后仍然找不到命令,可能需要提示检查路径或者是否存在多个版本冲突,但根据问题复杂度,可能不需要深入,除非用户进一步询问。</think>在Linux系统中安装`nc`(netcat)命令的步骤如下: --- ### 1. **确认系统发行版** 首先确定你的Linux发行版类型,不同发行版的安装命令可能不同: - **Debian/Ubuntu**:使用 `apt` 包管理器 - **CentOS/RHEL**:使用 `yum` 或 `dnf` 包管理器 - **Fedora**:使用 `dnf` - **Arch Linux**:使用 `pacman` --- ### 2. **安装netcat** 根据发行版选择对应的命令: #### **Debian/Ubuntu** ```bash sudo apt update sudo apt install netcat-openbsd # 推荐安装OpenBSD版本(常用) # 或 sudo apt install netcat-traditional # 传统版本(功能更多但语法不同) ``` #### **CentOS/RHEL 7及以下** ```bash sudo yum install nc # 或安装nmap-ncat(功能更全) sudo yum install nmap-ncat ``` #### **CentOS/RHEL 8+ 或 Fedora** ```bash sudo dnf install nc # 或 sudo dnf install nmap-ncat ``` #### **Arch Linux** ```bash sudo pacman -S gnu-netcat ``` --- ### 3. **验证安装** 安装完成后,检查是否成功: ```bash nc -h # 或查看版本 nc -v ``` --- ### 4. **常见问题** - **找不到包名**:尝试搜索软件包: ```bash apt search netcat # Debian/Ubuntu dnf search netcat # CentOS/Fedora ``` - **权限问题**:确保使用 `sudo` 提权。 - **版本差异**:不同发行版的 `nc` 功能可能略有差异,可通过 `man nc` 查看文档。 --- ### 5. **基本使用示例** ```bash # 监听端口(服务端) nc -lvnp 1234 # 连接到服务端(客户端) nc 127.0.0.1 1234 ``` 通过以上步骤即可完成安装并使用 `nc` 命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值