当前位置:首页 > Linux > 正文

如何查看Linux端口状态?

使用 netstat -tuln 或 ss -tuln 命令查看监听端口及其状态, lsof -i :端口号 可检查特定端口占用情况,这些命令需 sudo 权限查看所有信息。

一、ss 命令(推荐首选)

优势:替代传统netstat,执行速度更快,直接读取内核数据。

常用组合

# 查看所有监听端口(LISTEN)和已建立连接(ESTAB) ss -tulnp # 解析输出关键字段: # -t: TCP端口 -u: UDP端口 -l: 仅监听 -n: 数字形式 -p: 显示进程

输出示例

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3)) ESTAB 0 0 192.168.1.10:22 192.168.1.5:54321

关键解读:

  • LISTEN:服务正在监听(如SSH的22端口)
  • ESTAB:活跃连接(如已建立的SSH会话)


️ 二、netstat 命令(兼容旧系统)

适用场景:老版本系统或习惯经典工具时使用。

操作示例

输出字段解析

Proto(协议)、Recv-Q/Send-Q(队列数据)、Local Address(本机IP:端口)、State(状态)、PID/Program(进程信息)


️ 三、lsof 命令(精准定位进程)

核心价值:直接关联端口与进程,适合排查冲突。

关键操作

# 查看占用80端口的进程 lsof -i :80 # 检查TCP协议22端口 lsof -i TCP:22

输出示例

提示:NAME列显示LISTEN表示监听中,ESTABLISHED为活动连接。


四、nmap 扫描(远程/本机探测)

核心用途:检测端口开放状态(本地或远程主机)。

操作步骤

# 安装nmap(未安装时) sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL # 扫描本机所有TCP端口 nmap -sT 127.0.0.1 # 快速扫描常用端口(示例远程主机) nmap -F 192.168.1.100

典型输出

PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql

️ 注意:STATE为open表示端口开放,filtered可能被防火墙拦截。


五、连通性测试(telnet/nc)

快速验证:测试端口是否可访问(无需完整扫描)。

方法对比

| 工具 | 命令示例 | 适用场景 |

|———|——————————|———————–|

| telnet| telnet 192.168.1.100 3306 | 基础TCP测试(需安装) |

| nc | nc -zv 192.168.1.100 22 | 支持UDP/TCP,无交互 |

结果解读

  • 连接成功 → 显示Connected to...或succeeded!
  • 连接失败 → Connection refused(服务未运行)或超时(防火墙拦截)


根据场景选择工具

  1. 日常监控 → ss -tulnp(高效全面)
  2. 进程关联分析 → lsof -i :端口号(精准定位)
  3. 远程端口探测 → nmap -F 目标IP(专业扫描)
  4. 快速连通测试 → nc -zv IP 端口(即时验证)

引用说明:本文内容基于Linux内核文档(kernel.org)、ss(8)手册页及Nmap官方指南(nmap.org),符合系统管理员通用实践标准。

安全提示:生产环境操作前请确认权限,避免敏感端口暴露。

0