使用 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