百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

手把手教你 3 个 Linux 中快速检测端口的小技巧

nanshan 2025-03-04 13:17 9 浏览 0 评论

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约


每日英文

Promise yourself to be so strong that nothing can disturb your peace of mind.

对自己承诺:我要强大到任何事情都无法破坏我内心的平和。


每日掏心话

不知道是越来越独立 ,还是越来越心虚, 走了这么久, 发现唯一靠得住的还是自己 。


来自:Linuxize | 责编:乐乐

链接:t.cn/A6zK0qcm

程序员小乐(ID:study_tech)第 807 次推文 图片来自百度


往日回顾:1.3万亿条数据查询毫秒级响应,如何做到的?


正文


无论是要解决网络连接问题还是配置防火墙,第一件事是要检查系统实际打开了哪些端口。

本文介绍了几种快速查找 Linux 系统上哪些端口向外部开放的方法。

1、什么是开放端口

监听端口是应用程序监听的网络端口。你要得到的监听端口名单通常可以通过如 ss、netstat 或 lsof 命令查询系统上网络堆栈。每个监听端口都可以使用防火墙打开或关闭(过滤)。

一般而言,开放端口是一个网络端口,它接受来自远程位置的传入数据包。

例如:如果你正在运行的监听端口 80、443 的 Web 服务器,并把这些端口在防火墙上对任何人开放。使用浏览器将能够访问托管在 Web 服务器上的网站。在这种情况下,80 和 443 都是开放端口。

开放端口可能会带来安全风险,因为攻击者可以使用每个开放端口来利用漏洞或执行任何其他类型的攻击。您应该只公开应用程序功能所需的端口,然后关闭所有其他端口。

2、使用 Nmap 命令检查开放端口

Nmap 是功能强大的网络扫描工具,可以扫描单个主机和大型网络。它主要用于安全审核和渗透测试。

Nmap 是端口扫描的首选工具。除端口扫描外,Nmap 还可以检测 Mac 地址、操作系统类型、内核版本等。

从控制台发出以下命令确定哪些端口正在监听来自网络的 TCP 连接:



  • $ sudo nmap -sT -p- 10.10.8.8



-sT 选项告诉 Nmap 扫描 TCP 端口, -p- 扫描所有端口(65535 个)。如果不使用 -p-,Nmap 将仅扫描 1000 个端口。












  • Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CESTNmap scan report for 10.10.8.8Host is up (0.0012s latency).Not shown: 998 closed portsPORT STATE SERVICE22/tcp open ssh80/tcp open httpMAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC)


  • Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds


以上显示,只有端口 22、80 以及 8069 在目标系统上打开。

要扫描 UDP 端口,请使用 -sU 代替 -sT:



  • $ sudo nmap -sU -p- 10.10.8.8



有关更多信息,请访问 Nmap 手册页,并了解此工具的所有其他强大功能。

3、使用 Netcat 命令检查开放端口

Netcat(或nc)是一种命令行工具,可以使用 TCP 或 UDP 协议跨网络连接读取和写入数据。

使用 netcat 可以扫描单个端口或端口范围。

例如,要扫描 IP 地址为 10.10.8.8 的远程计算机上端口范围为 20-80 之间打开的 TCP 端口,你可以使用以下命令:



  • $ nc -z -v 10.10.8.8 20-80



-z 选项指示 nc 仅扫描打开的端口,而不发送任何数据,并且 -v 用于获取更多详细信息。

输出将如下所示:







  • nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refusednc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refusedConnection to 10.10.8.8 22 port [tcp/ssh] succeeded!...Connection to 10.10.8.8 80 port [tcp/http] succeeded!



如果只希望将以上开放端口的行打印在屏幕上,则可以使用 grep 命令过滤结果。





  • $ nc -z -v 10.10.8.8 20-80 2>&1 | grep succeededConnection to 10.10.8.8 22 port [tcp/ssh] succeeded!Connection to 10.10.8.8 80 port [tcp/http] succeeded!



要扫描 UDP 端口,请将 -u 选项传递给 nc 命令:



  • $ nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded



4、使用 Bash 伪设备检查打开的端口

检查某个端口是打开还是关闭的另一种方法是使用 Bash Shell 检查 /dev/tcp/.. 或 /dev/udp/.. 下的伪设备。

在 /dev/$PROTOCOL/$HOST/$IP 伪设备上执行命令时,Bash 将在指定端口上打开到指定主机的 TCP 或 UDP 连接。

以下 if..else 语句将检查端口 443 在 kernel.org 是否打开:








  • if timeout 5 bash -c '/dev/null'then echo "Port is open"else echo "Port is closed"fi



输出将如下所示:



  • Port is open



上面的代码如何工作?

使用伪设备连接到端口时的默认超时时间非常长,因此我们使用 timeout 命令在 5 秒后终止测试命令。如果建立了 kernel.org 端口连接,则 443 测试命令将返回 true。你也可以使用 for 循环来检查指定的端口范围:





  • for PORT in {20..80}; do timeout 1 bash -c "/dev/null" && echo "port $PORT is open"done



输出将如下所示:




  • port 22 is openport 80 is open



5、结论

我们为你展示了几种如何使用扫描开放端口的工具,当然你也可以使用其它工具来达到同样的目的,例如:Python Socket 模块、Curl、Telnet 或 Wget。

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。


猜你还想看


阿里、腾讯、百度、华为、京东最新面试题汇集

深入理解JVM,7种垃圾收集器,看完我跪了!

贼好用的Java工具类库,GitHub星标10.4k+,你在用吗?

面试官我:什么是NIO?NIO的原理是什么机制?我竟然没回答上来...

关注订阅号「程序员小乐」,收看更多精彩内容
嘿,你在看吗?

相关推荐

使用nginx配置域名及禁止直接通过IP访问网站

前段时间刚搭建好这个网站,一直没有关注一个问题,那就是IP地址也可以访问我的网站,今天就专门研究了一下nginx配置问题,争取把这个问题研究透彻。1.nginx配置域名及禁止直接通过IP访问先来看n...

如何在 Linux 中使用 PID 号查找进程名称?

在Linux的复杂世界中,进程是系统运行的核心,每个进程都由一个唯一的「进程ID」(PID)标识。无论是系统管理员在排查失控进程,还是开发者在调试应用程序,知道如何将PID映射到对应的进程名称都是一项...

Linux服务器硬件信息查询与日常运维命令总结

1.服务器硬件信息查询1.1CPU信息查询命令功能描述示例lscpu显示CPU架构、核心数、线程数等lscpucat/proc/cpuinfo详细CPU信息(型号、缓存、频率)cat/proc/c...

Ubuntu 操作系统常用命令详解(ubuntu常用的50个命令)

UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...

从 0 到 1:打造基于 Linux 的私有 API 网关平台

在当今微服务架构盛行的时代,API网关作为服务入口和安全屏障,其重要性日益凸显。你是否想过,不依赖商业方案,完全基于开源组件,在Linux上构建一个属于自己的私有API网关平台?今天就带你...

Nginx搭建简单直播服务器(nginx 直播服务器搭建)

前言使用Nginx+Nginx-rtmp-module在Ubuntu中搭建简单的rtmp推流直播服务器。服务器环境Ubuntu16.04相关概念RTMP:RTMP协议是RealTi...

Linux连不上网?远程卡?这篇网络管理指南你不能错过!

大家好!今天咱们聊个所有Linux用户都躲不开的“老大难”——网络管理。我猜你肯定遇到过这些崩溃时刻:新装的Linux系统连不上Wi-Fi,急得直拍桌子;远程服务器SSH连不上,提示“Connecti...

7天从0到上线!手把手教你用Python Flask打造爆款Web服务

一、为什么全网开发者都在疯学Flask?在当今Web开发的战场,Flask就像一把“瑞士军刀”——轻量级架构让新手3天速成,灵活扩展能力又能支撑百万级用户项目!对比Django的“重型装甲”,Flas...

nginx配置文件详解(nginx反向代理配置详解)

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django,Flask,et...

30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务

在云计算时代,利用容器技术快速部署应用已成为开发者必备技能。本文将手把手教你在阿里云轻量应用服务器上,通过Docker高效部署Nginx并发布静态网站,全程可视化操作,新手也能轻松上手!一、准...

Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置

各位摸鱼搭子们!今天咱不聊代码里的NullPointerException,改聊点「摸鱼必备生存技能」——Nginx配置!先灵魂拷问一下:写了一堆接口却不会部署?服务器被恶意请求打崩过?静态资源加载...

如何使用 Daphne + Nginx + supervisor部署 Django

前言:从Django3.0开始支持ASGI应用程序运行,使Django完全具有异步功能。Django目前已经更新到5.0,对异步支持也越来越好。但是,异步功能将仅对在ASGI下运行的应用程序可用...

Docker命令最全详解(39个最常用命令)

Docker是云原生的核心,也是大厂的必备技能,下面我就全面来详解Docker核心命令@mikechen本文作者:陈睿|mikechen文章来源:mikechen.cc一、Docker基本命令doc...

ubuntu中如何查看是否已经安装了nginx

在Ubuntu系统中,可以通过以下几种方法检查是否已安装Nginx:方法1:使用dpkg命令(适用于Debian/Ubuntu)bashdpkg-l|grepnginx输出...

OVN 概念与实践(德育概念的泛化在理论和实践中有什么弊端?)

今天我们来讲解OVN的概念和基础实践,要理解本篇博客的内容,需要前置学习:Linux网络设备-Bridge&VethPairLinux网络设备-Bridge详解OVS+Fa...

取消回复欢迎 发表评论: