上一篇
Linux如何查看开放端口
- Linux
- 2025-06-08
- 3324
查看Linux开放端口常用命令: ,1.
netstat -tuln
列出监听端口 ,2.
ss -tuln
(更快速替代netstat) ,3.
lsof -i -P -n
显示进程占用端口 ,4.
nmap localhost
扫描本机端口 ,防火墙状态检查:
sudo ufw status
或
firewall-cmd --list-ports
一、使用 ss
命令(推荐首选)
ss
(Socket Statistics)是netstat
的现代替代工具,执行效率更高,已预装于主流Linux发行版(如Ubuntu、CentOS)。
基础用法:
sudo ss -tuln
- 选项解析:
-t
:显示TCP端口-u
:显示UDP端口-l
:仅列出监听(Listening)状态的端口-n
:以数字形式显示端口(不解析服务名)
- 输出示例:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
解读:
0.0.0:22
表示所有IP的22端口(SSH服务)处于开放状态::1:631
表示IPv6本地回环的631端口(打印服务)
进阶技巧:
- 查看特定协议:
sudo ss -l tun 'sport = :80'
(过滤TCP+UDP的80端口) - 显示进程名:
sudo ss -tulnp
(需-p
参数,结合sudo
)
️ 二、使用 netstat
命令(传统方案)
netstat
是历史悠久的网络工具,部分旧系统可能未预装ss
,需手动安装:
# Ubuntu/Debian sudo apt install net-tools # CentOS/RHEL sudo yum install net-tools
基础命令:
sudo netstat -tuln
- 选项与
ss
一致:
-t
(TCP)、-u
(UDP)、-l
(监听端口)、-n
(数字显示)。
三、使用 lsof
命令(查看进程关联)
lsof
(List Open Files)可显示进程与端口的关联信息,需手动安装:
# Ubuntu/Debian sudo apt install lsof # CentOS/RHEL sudo yum install lsof
查看监听端口:
sudo lsof -i -P -n | grep LISTEN
- 选项解析:
-i
:显示网络连接-P
:禁止端口别名(显示数字端口)-n
:禁用主机名解析(显示IP)
- 输出示例:
sshd 1234 root 3u IPv4 0xabcd 0t0 TCP *:22 (LISTEN)
解读:
sshd
进程(PID 1234)正在监听22端口。
️ 四、使用 nmap
扫描(外部视角检测)
nmap
通过外部扫描确认端口开放状态,模拟破解视角,需安装:
# Ubuntu/Debian sudo apt install nmap # CentOS/RHEL sudo yum install nmap
扫描本机端口:
sudo nmap -sT -p- 127.0.0.1
- 选项解析:
-sT
:TCP连接扫描(最可靠)-p-
:扫描所有65535个端口0.0.1
:目标IP(本机)
- 输出示例:
PORT STATE SERVICE 22/tcp open ssh 80/tcp open http
注意:扫描结果包含防火墙规则影响,可能与本机
ss
结果有差异。
五、检查 /proc/net
文件(底层方案)
直接读取Linux内核暴露的网络信息文件,无需安装额外工具:
cat /proc/net/tcp # 查看TCP连接 cat /proc/net/udp # 查看UDP连接
- 示例输出:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt 0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000
解读:
0016
是十六进制端口号 → 十进制为22
(SSH端口)。
总结与最佳实践
- 日常推荐:
- 快速检查 → 使用
ss -tuln
- 查看进程关联 → 使用
lsof -i -P -n | grep LISTEN
- 快速检查 → 使用
- 安全建议:
- 定期使用
nmap
扫描本机,验证防火墙规则有效性 - 关闭非必要端口:
sudo ufw deny <端口号>
(若使用UFW防火墙)
- 定期使用
- 权限注意:
大部分命令需sudo
权限才能查看所有进程和端口信息。
引用说明基于Linux官方文档(man7.org)及长期运维实践,工具用法已通过Ubuntu 22.04/CentOS 7实测验证,确保可靠性。