50% off 所有套餐限时优惠,起价 $2.48/mo
9 min left
Security & Networking

如何通过命令行或 PowerShell 检查 Linux 上的开放端口?

Kelly Watson By Kelly Watson 9 min read Updated Oct 28, 2025
一条数字通道,右侧有编号的端口「门」,其中一扇打开,一扇关闭,象征问题「如何检查 Linux 中的开放端口是否存在漏洞?」的答案

大多数人认为检查开放端口只是安全专家的工作,直到他们的服务器因为一个他们甚至不知道在监听的暴露端口而遭到入侵。你可以在 Linux 上使用 netstat、ss、lsof、nmap 和 netcat 等内置命令检查开放端口,也可以从 Windows 系统使用 PowerShell 远程扫描端口。每种方法都提供不同的详细程度,并且需要不同的权限。

端口管理的重要性不言而喻。自动扫描活动日益频繁,攻击者不断探测脆弱的入口点。无论你是在保护生产服务器还是测试本地服务,掌握端口安全都是维护系统安全和稳定运行的基础。

TL;DR: Quick Overview

  • 用 ss 或 netstat 快速检查监听端口,无需安装额外工具
  • 需要全面的端口扫描和详细的服务检测时,部署 nmap
  • 使用 lsof 命令查看具体是哪个进程在占用某个端口
  • 使用 PowerShell 的 Test-NetConnection 从 Windows 检查远程 Linux 服务器上的端口

什么是端口?简单来说

A 3D illustration of a server as a building with many numbered port "doorways," explaining what a port is in simple terms.

把端口想象成服务器上编号的大门。每个端口都是一个通信端点,网络流量从这里进入或离开你的系统。端口号范围是 0 到 65,535,分为三类:众所周知的端口(0-1023)、注册端口(1024-49151)和动态端口(49152-65,535)。

简单来说,当你浏览网站时,浏览器会通过端口 80 连接 HTTP,或通过端口 443 连接 HTTPS。邮件服务器在端口 25 监听 SMTP,而 SSH 远程访问运行在端口 22。这些监听端口是合法流量的网关,但如果没有保护,也会成为攻击者的入口。

端口与两个主要传输协议协同工作:TCP 用于可靠的面向连接通信,UDP 用于更快的无连接数据传输。理解端口的工作原理能帮助你做出更明智的决策,确定哪些端口应该保持开放,哪些应该关闭以提高安全性。

如何检查 Linux 中的开放端口

一个标有 "netstat" 的放大镜正在检查网络连接,象征该命令在网络分析中的作用。

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 扫描,看起来像声纳扫描在识别不同设备上的开放和关闭端口。

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 托管

选择经济版或高级 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 之间架起桥梁。

这里真正的收获不在于死记硬背命令。关键是把端口审计变成日常习惯,而不是等到出问题了才慌张应对。每周定期扫描,发现未使用的端口立即关闭,记录下各个服务需要的端口。这样一来,端口检查就从被动的应急处理变成了主动的防御策略。

Share

博客更新

Keep reading.

MikroTik L2TP VPN 指南的 Cloudzy 标题图像,展示笔记本电脑通过发光的蓝色和金色数字隧道连接到服务器机架,并配有盾牌图标。
Security & Networking

MikroTik L2TP VPN 设置(含 IPsec):RouterOS 指南(2026)

在这个 MikroTik L2TP VPN 设置中,L2TP 处理隧道,IPsec 处理加密和完整性验证。将两者结合使用可以获得原生客户端兼容性,无需第三方工具。

Rexa CyrusRexa Cyrus 9 min read
终端窗口显示 SSH 警告信息,提示远程主机标识已更改。深蓝绿色背景上显示修复指南标题和 Cloudzy 品牌标识。
Security & Networking

警告:远程主机标识已更改及修复方法

SSH 是一种安全网络协议,可在系统之间创建加密隧道。在需要远程访问计算机但无需图形界面的开发者中仍然广泛使用。

Rexa CyrusRexa Cyrus 10 min read
DNS 服务器故障排查指南插图,深色背景上显示警告符号和蓝色服务器,用于 Linux 名称解析错误。
Security & Networking

名称解析临时失败:含义和修复方法?

使用 Linux 时,在尝试访问网站、更新软件包或执行需要网络连接的任务时,可能会遇到名称解析临时失败错误。

Rexa CyrusRexa Cyrus 12 min read

Ready to deploy? From $2.48/mo.

独立云服务,始于2008年。AMD EPYC、NVMe,40 Gbps。14天退款保障。