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
命令(兼容旧系统)
适用场景:老版本系统或习惯经典工具时使用。
操作示例:
# 查看TCP/UDP监听端口及关联进程 netstat -tulnp # 实时监控端口活动(每秒刷新) netstat -c -tunap
输出字段解析:Proto
(协议)、Recv-Q/Send-Q
(队列数据)、Local Address
(本机IP:端口)、State
(状态)、PID/Program
(进程信息)
🛠️ 三、lsof
命令(精准定位进程)
核心价值:直接关联端口与进程,适合排查冲突。
关键操作:
# 查看占用80端口的进程 lsof -i :80 # 检查TCP协议22端口 lsof -i TCP:22
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 567 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)
💡 提示:
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
(服务未运行)或超时(防火墙拦截)
根据场景选择工具
- 日常监控 →
ss -tulnp
(高效全面) - 进程关联分析 →
lsof -i :端口号
(精准定位) - 远程端口探测 →
nmap -F 目标IP
(专业扫描) - 快速连通测试 →
nc -zv IP 端口
(即时验证)
📚 引用说明:本文内容基于Linux内核文档(kernel.org)、ss(8)手册页及Nmap官方指南(nmap.org),符合系统管理员通用实践标准。
🔐 安全提示:生产环境操作前请确认权限,避免敏感端口暴露。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/20497.html