上一篇
如何查看linux服务器端口
- 后端开发
- 2025-07-27
- 4736
Linux服务器上,可通过
netstat -tuln、
ss -tuln、
sudo lsof -i -P -n | grep LISTEN等命令查看端口信息
是查看Linux服务器端口的详细方法:
使用netstat命令
- 基础用法:执行
netstat -tulpn,参数含义如下:-t:显示TCP连接;-u:显示UDP连接;-l:仅列出监听中的端口;-p:关联进程ID和名称;-n:以数字形式展示地址/端口号(不解析主机名)。
- 过滤特定端口:结合
grep筛选结果,netstat -tunlp | grep [端口号],可精准定位目标端口对应的服务进程。 - 适用场景:兼容大多数Linux版本,适合快速查看所有活跃的网络连接及监听状态。
使用ss命令(推荐)
- 高效替代方案:运行
ss -tulpen,-t/-u分别对应TCP/UDP;-l表示监听中的端口;-p显示进程详情;-n禁用DNS解析。
- 优势对比:相较于
netstat,ss性能更优且输出更清晰,尤其在高并发环境下响应更快。 - 典型应用:常用于现代发行版(如CentOS 7+、Ubuntu 16.04+),可替代老旧工具实现相同功能。
通过lsof分析文件描述符
- 核心指令:输入
sudo lsof -i -P -n,参数作用包括:-i:聚焦网络相关文件;-P:保留端口号原始数值;-n:避免反向DNS查询延迟。
- 优化显示:添加管道过滤监听状态,如
sudo lsof -i -P -n | grep LISTEN,仅展示当前被占用的端口。 - 深度排查:若怀疑某端口冲突,可用
lsof -i:[端口号]直接定向查询其归属进程。
借助fuser定位进程使用者
- 语法格式:执行
fuser -n tcp [端口号],-n tcp指定检查TCP协议下的端口占用情况。 - 结果解读:该命令会返回使用目标端口的所有进程ID(PID),便于进一步通过
top或ps追踪具体应用。
利用nmap进行安全扫描
- 本地全量检测:运行
nc -z -v localhost 1-65535 > open_ports.txt,结合重定向保存结果,随后用文本编辑器分析。 - 远程验证可达性:从其他主机执行
nmap -p [范围] <目标IP>,验证防火墙外的暴露端口是否与预期一致。
| 工具名称 | 主要特点 | 典型场景 | 依赖权限 |
|---|---|---|---|
| netstat | 传统稳定,广泛支持 | 基础排查、兼容性优先 | 普通用户 |
| ss | 高性能、实时性强 | 生产环境监控、故障诊断 | root/sudo |
| lsof | 关联文件句柄与进程细节 | 深度分析资源占用 | root/sudo |
| fuser | 快速定位端口所属进程 | 解决端口冲突 | root/sudo |
| nmap/nc | 内外网穿透测试 | 安全性审计、跨节点验证 | 根据网络策略调整 |
相关问题与解答
Q1: 如果发现未知进程占用了重要端口怎么办?
A: 先通过lsof或fuser获取PID,再执行ps aux | grep [PID]查看完整命令路径,确认非必要服务后,使用kill -9 [PID]终止进程;若是反面程序,需结合日志分析和系统加固措施。
Q2: 为什么某些端口在本地可见但无法外部访问?
A: 可能原因包括防火墙规则限制(如iptables/UFW未放行)、云服务商安全组配置阻断、服务绑定到Loopback接口(仅监听127.0.0.1),可通过iptables -L -v -n检查本机防火墙,并通过telnet外部主机测试
