使用 netstat 命令(经典工具)
netstat 是传统的网络统计工具,可查看端口状态(需安装 net-tools 包):
# 查看所有活动连接(含进程名) sudo netstat -tulnp
- 参数解析:
-t:TCP端口-u:UDP端口-l:仅显示监听端口-n:以数字形式显示端口(不解析服务名)-p:显示关联进程名(需sudo权限)
示例输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
使用 ss 命令(推荐替代方案)
ss(Socket Statistics)是 netstat 的现代替代品,速度更快、功能更全:
# 查看所有监听端口 sudo ss -tuln # 检查特定端口(如80端口) sudo ss -tuln sport = :80
- 参数解析:
-s:统计摘要sport/dport:过滤源/目标端口(例:dport = :443)
使用 lsof 命令(查看进程占用)
通过进程或文件视角检查端口(需安装 lsof):
# 查看所有网络端口 sudo lsof -i # 检查特定端口占用(如3306) sudo lsof -i :3306
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 456 mysql 12u IPv4 12345 0t0 TCP *:3306 (LISTEN)
使用 nmap 扫描端口(远程检测)
nmap 用于扫描本地或远程主机的开放端口(需安装):
# 扫描本机所有端口 nmap localhost # 扫描特定端口范围(如1-1000) nmap -p 1-1000 192.168.1.1
注意:扫描他人主机需获得授权,避免法律风险。
查看服务配置文件
某些服务的端口通过配置文件定义:
- 常见位置:
/etc/services:系统预定义服务端口列表/etc/apache2/ports.conf:Apache端口/etc/ssh/sshd_config:SSH端口(默认为22)
特殊场景处理
- 仅查看TCP监听端口:
ss -tln
- 检查端口是否被占用:
sudo lsof -i :8080 # 无输出表示空闲
- 查看UDP服务:
sudo ss -uln
注意事项
- 权限要求:
查看进程关联信息(如netstat -p或lsof)需sudo权限。 - 工具安装:
- Ubuntu/Debian:
sudo apt install net-tools lsof nmap - CentOS/RHEL:
sudo yum install net-tools lsof nmap
- Ubuntu/Debian:
- 防火墙干扰:
若端口未显示,检查防火墙(ufw或firewalld)是否阻止访问。
- 快速监听端口检查 → 用
ss -tuln - 查进程占用 → 用
lsof -i :端口号 - 远程扫描 → 用
nmap(合法授权前提下)
定期检查开放端口可提升系统安全性,避免未授权服务暴露,建议结合防火墙规则限制敏感端口访问。
引用说明: 参考 Linux 官方文档(man pages)、Linux Foundation 网络管理指南 及 Nmap 官方手册,确保方法经过实践验证,命令示例在 Ubuntu 22.04 及 CentOS 9 环境中测试通过。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6741.html