如何看linux开放了哪些端口号,linux 怎么看对外开放的端口
《如何查看Linux已开放的端口?5种方法与注意事项全解析》
为什么需要查看开放的端口? 在Linux服务器管理中,开放的端口直接关系到网络服务的安全性,未授权的端口开放可能导致数据泄露或被攻击。
- 管理员可能误开启测试端口却未及时关闭
- 第三方服务可能占用意外端口
- 攻击者扫描端口发现未防护的开放端口
5种专业查看方法详解
使用ss命令(推荐) 语法:ss -tulpn 说明:

- t:显示TCP连接
- u:显示UDP端口
- l:显示监听端口(Listen)
- p:显示关联进程
- n:显示IP地址和端口编号 示例输出: listening on 0.0.0.0:22 (ss -ulpn) 0.0.0.0:22 tcp LISTEN 4282/servicemon
netstat命令(传统工具) 语法:netstat -tuln 特点:
- 适合熟悉传统命令的管理员
- 需注意Linux内核版本差异(netstat在较新内核中功能被ss取代) 示例: netstat -tuln | grep ':22' Active Internet connections (server): TCP 0.0.0.0:22 0.0.0.0:* LISTEN
nmap扫描法(主动探测) 语法:sudo nmap -sV -p 1-10000 关键参数:
- -sV:版本探测
- -p:指定端口范围
- -T4:加速扫描模式 输出示例: 22/tcp open ssh OpenSSH 8.2p1, protocol 2.0 80/tcp open http Apache httpd 2.4.41 ((Debian)) 443/tcp open https Apache httpd 2.4.41 ((Debian))
lsof命令(进程关联查询) 语法:sudo lsof -i -n -P | grep ':' 优势:
- 直接关联打开端口的进程
- 可终止异常进程 示例: lsof -i -n -P | grep ':22' sshd: TCP 0.0.0.0:22 (LISTEN) sshd: TCP *:22 (ESTABLISHED)
系统自带的firewalld(防火墙视角) 语法:sudo firewall-cmd --list-all 查看已开放端口: firewall-cmd --zone=public --list-all public (active, default) interfaces: enp0s3 sources: 10.0.0.0/24 services: ssh http https masquerade: no forward-ports: 22:tcp permanent 80:tcp permanent

关键注意事项
- 权限要求:多数命令需要sudo权限
- 端口状态解读:
- LISTEN:正在监听
- ESTABLISHED:已建立连接
- CLOSE_WAIT:连接关闭等待
- 安全建议:
- 定期扫描(建议每月至少1次)
- 关闭非必要端口(如关闭23 telnet)
- 使用防火墙规则限制访问(如iptables)
- 配置端口时记录操作日志
进阶技巧
-
实时监控工具(ss -an) sudo ss -an | grep ':' 可持续观察端口状态变化
-
端口占用率分析(结合top) lsof -i -n -P | sort -nrk3 | head -n10 按连接数排序查看高占用端口

-
自动化脚本(示例) for port in {1..65535}; do if ss -tulpn | grep ":$port"; then echo "端口 $port 已开放" fi done
常见问题解答 Q:如何强制关闭异常端口? A:使用lsof找到进程后强制终止: sudo lsof -i -n -P | grep ':8080' | awk '{print $2}' | xargs kill -9
Q:如何查看已关闭的端口? A:检查系统日志: grep 'port closed' /var/log/syslog
Q:如何验证端口关闭? A:使用telnet测试: telnet 192.168.1.100 8080 若连接失败则表示端口已关闭
通过以上方法,管理员可以全面掌握Linux服务器的端口状态,有效维护网络边界安全,建议将端口检查纳入定期维护流程,结合防火墙规则和入侵检测系统,构建多层防御体系。
