如何查看服务器的开放端口?
美国、香港服务器
如何查看服务器的开放端口?
01-14 来源:
查看服务器开放端口的核心是区分 “本机监听的端口” 和 “对外暴露的端口”,前者是服务器主动开启的服务端口,后者是经过防火墙 / 安全组放行后外部可访问的端口。以下是适配 Linux(尤其是 Ubuntu 24.04)的多种实操方法,覆盖不同场景需求:
一、 查看本机监听的端口(服务器主动开启的端口)
这类方法可以列出服务器上所有正在监听网络连接的端口,包括 TCP 和 UDP 协议,不受防火墙规则影响。
方法 1:使用 ss 命令(推荐,比 netstat 更高效)
ss 是 Linux 原生的网络状态查看工具,功能强大且速度快,Ubuntu 24.04 默认安装。
bash
运行
# 查看所有监听端口(TCP+UDP),显示服务名称和进程ID
sudo ss -tulnp
参数说明:
-t:显示 TCP 端口
-u:显示 UDP 端口
-l:仅显示监听状态的端口
-n:以数字形式显示端口号(不解析服务名,速度更快)
-p:显示端口对应的进程 ID 和程序名称(需要 root 权限)
输出示例解读:
plaintext
LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
0.0.0.0:22:表示 SSH 服务监听所有网卡的 22 端口
127.0.0.1:3306:表示 MySQL 仅监听本地回环地址,外部无法直接访问
方法 2:使用 netstat 命令(兼容老系统)
netstat 是传统的网络工具,部分新系统默认未安装,需手动安装:
bash
运行
# 安装 net-tools 包(包含 netstat)
sudo apt install net-tools -y
# 查看所有监听端口
sudo netstat -tulnp
参数与 ss 完全一致,输出格式也基本相同。
方法 3:使用 lsof 命令(按进程 / 端口查询)
lsof 可以列出进程打开的文件和网络连接,适合已知端口查进程或已知进程查端口的场景。
bash
运行
# 查看特定端口(如 80)对应的进程
sudo lsof -i :80
# 查看所有网络连接(监听+已建立)
sudo lsof -i
二、 查看对外暴露的端口(外部可访问的端口)
本机监听的端口,若未被防火墙 / 安全组放行,外部仍无法访问。因此需要结合防火墙规则,确认对外暴露的端口。
场景 1:Ubuntu 自带 UFW 防火墙
bash
运行
# 查看 UFW 已配置的规则(显示允许/拒绝的端口)
sudo ufw status numbered
输出示例解读:
plaintext
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN 192.168.1.0/24
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
仅 22/tcp(仅限 192.168.1.0/24 网段)、80/tcp、443/tcp 对外暴露;
即使本机监听了 3306 端口,若 UFW 未允许,则外部无法访问。
场景 2:使用 iptables 防火墙
bash
运行
# 查看 iptables 过滤规则(重点看 INPUT 链)
sudo iptables -L INPUT -n --line-numbers
输出示例解读:
plaintext
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
规则 1 允许 192.168.1.0/24 网段访问 22 端口;
规则 2 允许所有 IP 访问 80 端口;
其他端口默认被 policy DROP 拒绝。
场景 3:云服务器安全组(关键!)
云服务器(阿里云 / 腾讯云 / AWS)的端口暴露,最终由安全组规则决定(优先级高于服务器本地防火墙)。
登录云服务器控制台 → 找到安全组 → 查看入方向规则;
只有安全组允许的端口,外部才能访问(即使本地防火墙放行,安全组拒绝也无法访问)。
三、 从外部验证端口是否可访问(最准确)
通过外部机器或在线工具,模拟攻击者视角,验证端口是否真的对外暴露。
方法 1:使用 nmap 工具(本地机器扫描服务器)
在外部 Linux/macOS 机器上安装 nmap,扫描目标服务器端口:
bash
运行
# 安装 nmap
sudo apt install nmap -y # Linux
brew install nmap # macOS
# 扫描服务器指定端口(如 22、80)
nmap -p 22,80 服务器公网IP
# 扫描全端口(1-65535),耗时较长
nmap -p- 服务器公网IP
输出示例解读:
plaintext
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
STATE open:端口对外暴露;
STATE closed/filtered:端口未暴露。
方法 2:使用在线端口扫描工具
适合没有外部机器的场景,直接通过网页扫描:
推荐工具:Ping.eu Port Scanner、Canyouseeme.org
输入服务器公网 IP 和要检测的端口,点击扫描即可。
四、 关键注意事项
区分 TCP 和 UDP 端口
TCP 端口多用于面向连接的服务(SSH、HTTP、MySQL);
UDP 端口多用于无连接的服务(DNS、DHCP);
扫描时需指定协议,例如 nmap -sU -p 53 服务器IP 扫描 UDP 53 端口。
本地监听但外部无法访问的原因
防火墙 / 安全组未放行该端口;
服务绑定的是本地回环地址(127.0.0.1),而非公网网卡(0.0.0.0)。
谨慎开放高危端口
数据库端口(3306、6379)、远程桌面端口(3389)等,尽量不对外暴露,如需访问,通过 VPN 或跳板机。
总结
查看开放端口的完整流程:
用 ss -tulnp 查看本机监听的端口和对应进程;
用 ufw status/iptables -L 查看本地防火墙规则;
检查云服务器安全组入方向规则;
从外部用 nmap 或在线工具验证端口是否可访问。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快