大多数人认为检查开放端口只是安全专家的工作,直到他们的服务器因为一个他们甚至不知道在监听的暴露端口而遭到入侵。你可以在 Linux 上使用 netstat、ss、lsof、nmap 和 netcat 等内置命令检查开放端口,也可以从 Windows 系统使用 PowerShell 远程扫描端口。每种方法都提供不同的详细程度,并且需要不同的权限。
端口管理的重要性不言而喻。自动扫描活动日益频繁,攻击者不断探测脆弱的入口点。无论你是在保护生产服务器还是测试本地服务,掌握端口安全都是维护系统安全和稳定运行的基础。
TL;DR: Quick Overview
- 用 ss 或 netstat 快速检查监听端口,无需安装额外工具
- 需要全面的端口扫描和详细的服务检测时,部署 nmap
- 使用 lsof 命令查看具体是哪个进程在占用某个端口
- 使用 PowerShell 的 Test-NetConnection 从 Windows 检查远程 Linux 服务器上的端口
什么是端口?简单来说

把端口想象成服务器上编号的大门。每个端口都是一个通信端点,网络流量从这里进入或离开你的系统。端口号范围是 0 到 65,535,分为三类:众所周知的端口(0-1023)、注册端口(1024-49151)和动态端口(49152-65,535)。
简单来说,当你浏览网站时,浏览器会通过端口 80 连接 HTTP,或通过端口 443 连接 HTTPS。邮件服务器在端口 25 监听 SMTP,而 SSH 远程访问运行在端口 22。这些监听端口是合法流量的网关,但如果没有保护,也会成为攻击者的入口。
端口与两个主要传输协议协同工作:TCP 用于可靠的面向连接通信,UDP 用于更快的无连接数据传输。理解端口的工作原理能帮助你做出更明智的决策,确定哪些端口应该保持开放,哪些应该关闭以提高安全性。
如何检查 Linux 中的开放端口

Linux 提供多个强大的端口分析工具,各有各的优势。有些工具预装好了,有些则需要安装。选择哪个工具要看你的权限级别、所需的细节程度和具体的使用场景。
使用 netstat 命令
netstat 命令几十年来一直是网络分析的可靠工具。要检查开放端口,请使用 netstat -tuln 每个标志都有明确的用途:-t 显示 TCP 连接,-u 展示 UDP 连接,-l 仅筛选监听端口,-n 以数字格式呈现结果而非解析主机名。
运行此命令时,你会看到显示协议、本地地址(含端口号)、远程地址和连接状态的输出。例如: 0.0.0.0:22 表示 SSH 在端口 22 上监听所有网络接口。每个条目都能让你立即看到活跃的服务及其网络状态。
The Linux netstat 命令 提供了额外的标志来进行更详细的分析。添加 -p 标志可以显示每个连接属于哪个进程,不过这需要 root 权限。例如, sudo netstat -tulnp 显示端口和正在使用该端口的进程 ID。
使用 ss 命令
ss 命令是 netstat 的现代替代品,性能更强,提供更详细的套接字统计信息。使用 ss -tuln 时可以加上与 netstat 相同的标志来获得类似的输出。但是 ss 处理信息的速度更快,尤其是在连接数众多的系统上。
要通过高级过滤检查开放端口,ss 提供了强大的语法选项。运行 ss -tulnp | grep :22 只显示与 SSH 相关的连接。命令 ss -tn state established 显示所有已建立的 TCP 连接,帮助你监控活跃会话。
ss 的一个优势是能够按特定条件过滤。例如, ss -t ‘( dport = :80 or sport = :80 )’ 只显示与端口 80 上网络流量相关的连接。这种精确性使 ss 在排查特定服务问题时非常有用。
使用 lsof 命令
lsof 命令擅长识别哪个进程正在使用特定端口。运行 sudo lsof -i -P -n 显示所有网络连接及其进程详情。-i 标志过滤互联网连接,-P 阻止端口号转换为服务名称,-n 跳过 DNS 解析以加快速度。
当你需要找出什么在使用特定端口时,lsof 会给出答案。例如, sudo lsof -i :3306 显示 MySQL 是否在运行,以及哪个进程 ID 拥有它。这在排查端口冲突或识别未授权服务时至关重要。
你也可以按特定应用程序过滤结果。如果你怀疑某个程序正在监听意外端口, sudo lsof -i -a -p [PID] 显示该特定进程 ID 的所有网络连接。
使用 Nmap 进行端口扫描

Nmap 是最全面的端口扫描工具之一。首先,用以下命令安装它 sudo apt install nmap 在 Ubuntu 或 Debian 系统上。要检查本地端口,使用 nmap localhost or nmap 127.0.0.1 进行基础扫描。
对于远程服务器,指定 IP 地址: nmap 192.168.1.100。Nmap 提供关于开放端口、服务版本的详细信息,使用高级标志甚至可以检测操作系统。命令 nmap -sV localhost 执行服务版本检测,准确显示每个端口上运行的软件。
安全团队看重 Nmap 测试防火墙规则的能力。运行 nmap -Pn [IP] 即使 ping 被阻止,也能扫描主机。但是,在扫描远程服务器之前,一定要确保你有相应权限。未经授权的端口扫描可能违反安全策略。
使用 Netcat (nc) 检查开放端口
Netcat 提供了一种简单直接的端口检查方法,开销最小。命令是 nc -zv localhost 22-80 扫描 22 到 80 的端口范围,显示哪些端口接受连接。-z 标志启用扫描模式而不发送数据,-v 提供详细输出。
对于单个端口验证, nc -zv hostname 443 可以快速确认 HTTPS 是否可访问。这个方法在脚本和自动化工作流中很有用。你可以结合 netcat 和 shell 循环进行更广泛的扫描: for port in {1..1000}; do nc -zv localhost $port 2>&1 | grep succeeded; done
The netcat listener 功能不仅限于端口检查,还可以进行实际的服务测试和数据传输,是任何系统管理员工具包中的多功能工具。
使用 PowerShell 检查开放端口
PowerShell 让 Windows 用户可以检查远程 Linux 服务器上的开放端口,无需安装额外软件。命令是 Test-NetConnection -ComputerName [Linux-IP] -Port 22 验证从 Windows 机器对 SSH 的可访问性。
要扫描多个端口,可以创建一个简单的 PowerShell 循环: 1..1024 | ForEach-Object { Test-NetConnection -ComputerName 192.168.1.100 -Port $_ -WarningAction SilentlyContinue } | Where-Object { $_.TcpTestSucceeded }。这个方法在从 Windows 系统检查 Ubuntu、Debian 或其他任何 Linux 发行版上的端口时非常有效。
PowerShell 的优势在于它与 Windows 基础设施的集成。你可以将结果导出为 CSV,通过电子邮件发送告警,或根据端口状态触发自动化响应,非常适合混合环境监控。
端口扫描方法对比
| Tool | Command Syntax | Best For | Prerequisites |
| netstat | netstat -tuln | 快速查看监听端口 | 预装在大多数系统上 |
| ss | ss -tuln | 性能快,socket 信息详细 | 预装(现代 Linux) |
| lsof | sudo lsof -i -P -n | 查找哪个进程使用某个端口 | 需要 root 或 sudo 权限 |
| nmap | nmap localhost | 全面的端口扫描 | 必须单独安装 |
| netcat | nc -zv host port | 简单的端口连接测试 | 预装或易于安装 |
| PowerShell | Test-NetConnection | 从 Windows 进行远程扫描 | 需要 Windows 机器 |
常见的 Linux 端口及其关联服务
| Port | Service | Protocol | Common Use |
| 22 | SSH | TCP | 通过以下方式进行安全远程访问 SSH 远程连接 |
| 80 | HTTP | TCP | 未加密的网络流量 |
| 443 | HTTPS | TCP | 加密的网络流量 |
| 21 | FTP | TCP | File transfers |
| 25 | SMTP | TCP | Email sending |
| 3306 | MySQL | TCP | Database connections |
| 5432 | PostgreSQL | TCP | Database connections |
端口配置需要了解防火墙设置和服务绑定。许多管理员 在 Linux 中更改 SSH 端口 从默认的 22 改为非标准端口,以减少自动化攻击尝试。这个 Telnet vs. SSH 讨论强调了为什么端口 23(Telnet)应该保持关闭,而选择端口 22 的加密 SSH 协议。
理解 Linux 中的开放端口

每个开放的端口都代表一个潜在的系统入口点。安全威胁已经加剧,自动化端口扫描活动激增 16.7% globally,威胁行为者不断探测容易被攻击的入口。这些侦察活动每月扫描数十亿个端口,寻找配置错误的服务或过时的软件。
说得好,但当攻击者发现一个开放端口时实际上会发生什么?端口状态告诉你答案。处于 LISTEN 状态的端口接受传入连接,ESTABLISHED 表示活跃的数据传输,TIME_WAIT 表示连接最近关闭但仍在被追踪。攻击者通过各种方法利用开放端口:对 SSH(端口 22)进行暴力破解、通过网络端口(80/443)进行 SQL 注入,以及通过容易受攻击的服务执行远程代码。
安全地开放端口需要采用深度防御方法。从默认拒绝防火墙策略开始。使用以下方式验证你的配置 iptables show rules。仅为你正在使用的服务开放端口,不再需要时立即关闭。考虑为常见服务更改默认端口,以减少自动化扫描的成功率。
Linux 生态系统面临重大安全挑战,数百个漏洞需要补丁修复。定期进行端口审计可以帮助你在攻击者之前发现未授权的服务。使用尊重安全边界的文件传输工具,例如 通过 SSH 复制文件 而不是未加密的 FTP。在系统间移动文件时,使用 使用 SCP 从远程系统复制文件到本地系统 通过 SSH 的安全通道提供加密传输。
最佳做法包括为敏感服务实施端口敲门机制、使用 fail2ban 阻止反复的身份验证失败,以及维护详细的连接尝试日志。定期进行安全审计,检查哪些端口保持开放状态以及它们是否仍然有实际用途。
Cloudzy 如何通过 Linux VPS 简化端口管理
通过配置妥当的基础设施,端口管理会轻松很多。Cloudzy的 Linux VPS 解决方案提供预配置的安全设置,包括智能防火墙规则和通过直观控制面板进行的简化端口管理。拥有完整的 root 访问权限,你可以完全控制哪些端口开放或关闭。
选择经济版或高级 Linux VPS 来托管网站或远程桌面,价格最低。VPS 运行在 Linux KVM 上,效率更高,采用强大硬件和 NVMe SSD 存储,速度更快。
Read More端口检查和管理讲究性能。Cloudzy 的 NVMe 存储确保你的端口扫描工具高效运行,而最高 10 Gbps 的连接能够轻松处理大流量业务,不会出现瓶颈。这套基础设施由 Linux 提供支持,后者已被全球大量服务器基础设施采用,使得这些优化配置经过充分验证,稳定可靠。
仅需每月 $3.96 起,即可获得专业级环境,完美用于练习端口管理技术。多个数据中心位置让你测试地理分布式部署,24/7 支持团队帮助处理复杂防火墙配置或端口相关问题排查。无论你是在学习如何在 Linux 中检查开放端口,还是部署生产服务,灵活的 VPS 环境都能加快你的安全实施进度。
Conclusion
说实话,检查开放端口没有绝对的最佳方法。快速本地检查用 ss 或 netstat 就足够了。需要全面的安全审计时,Nmap 能把所有情况都暴露出来。要找出哪个进程占用了某个端口,lsof 能省去大量猜测时间。当需要远程验证时,PowerShell 在 Windows 和 Linux 之间架起桥梁。
这里真正的收获不在于死记硬背命令。关键是把端口审计变成日常习惯,而不是等到出问题了才慌张应对。每周定期扫描,发现未使用的端口立即关闭,记录下各个服务需要的端口。这样一来,端口检查就从被动的应急处理变成了主动的防御策略。