【速查】Linux 下一个命令查所有开放端口 - linux运维
【速查】Linux 下一个命令查所有开放端口 - linux运维

Linux 下查所有开放端口,一个命令搞定

为什么需要这个?

排查服务、安全审计、日常运维,查开放端口是基本功。别一个个去 ps、netstat 翻,直接上命令。

【速查】Linux 下一个命令查所有开放端口 - linux运维

核心命令

1. ss(推荐,现代系统首选)

# 查所有监听端口(TCP+UDP)
ss -tuln

# 只看 TCP 监听
ss -tln

# 只看 UDP 监听
ss -uln

# 带进程信息(需要 root)
sudo ss -tulnp

输出示例:

State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port  Process
LISTEN  0       128          0.0.0.0:22          0.0.0.0:*      users:(("sshd",pid=1234,fd=3))
LISTEN  0       128             [::]:80             [::]:*      users:(("nginx",pid=5678,fd=6))

2. netstat(经典,部分系统需安装)

# 等效于 ss -tuln
netstat -tuln

# 带进程 PID
sudo netstat -tulnp

参数说明:
-t TCP
-u UDP
-l 仅监听状态
-n 数字格式(不解析主机名)
-p 显示进程(需 root)

3. lsof(适合排查具体端口)

# 列出所有监听端口
sudo lsof -i -P -n | grep LISTEN

# 查特定端口
sudo lsof -i :80

# 查某个进程开放的端口
sudo lsof -i -P -n -p <PID>

快速筛选技巧

只看非系统服务端口(排除22、80等常见端口)

ss -tuln | grep -E ':[0-9]{4,5}' | grep -vE ':22|:80|:443|:3306'

只看 IPv4 监听

ss -tln4
ss -tln6  # IPv6

输出格式化,一眼看出哪些端口对外

ss -tuln | awk 'NR>1 {print $5}' | cut -d: -f2 | sort -n | uniq

实用场景

场景1:快速确认某个端口是否在监听

ss -tln | grep :8080
# 有输出 = 在监听,无输出 = 没开

场景2:查谁占了端口(比如 80 被谁占了)

sudo ss -tlnp | grep :80
# 或者
sudo lsof -i :80

场景3:查所有端口及对应服务名

sudo ss -tulnp | awk '{print $5, $7}' | grep -v 'Peer'

重要提示

  • 普通用户只能看自己的进程端口,想看全部需要 sudo
  • ss 比 netstat 快,因为直接读内核,不遍历 /proc
  • 如果系统没有 ss,先装 iproute2 包(ss 包含在内)
  • 容器环境里,查的是容器内的端口,不是宿主机

一句话总结

# 日常够用
sudo ss -tulnp

存好这个,下次查端口别再用 netstat -ano | grep LISTEN 了,过时了。

📚 推荐资源

– 部分链接含推广返佣 –

🪐 加入「渗透实战安全圈」

每天分享渗透测试实战、挖洞技巧、漏洞分析、工具推荐

知识星球

https://t.zsxq.com/40MyD

💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注