Ubuntu 上查看开放的端口有几种常见的方法
- 使用 ss 命令(推荐)
ss(socket stat)是一个用于显示套接字统计信息的工具,通常比 netstat 更高效。它可以用来查看当前系统上所有开放的端口和监听的服务。
查看所有监听的端口:
ss -tuln
- -t:显示 TCP 连接
- -u:显示 UDP 连接
- -l:显示监听的端口
- -n:以数字形式显示端口(不解析服务名称)
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
这表示系统在 22 端口(SSH)上进行监听,支持所有 IP 地址(0.0.0.0 和 [::])。
查看具体的端口(例如:端口 80):
ss -tuln | grep ':80'
- 使用 netstat 命令
netstat 是另一个常用的网络状态检查工具,尽管它已经被 ss 替代,但仍然在很多系统中广泛使用。
查看所有监听的端口:
netstat -tuln
- -t:显示 TCP 连接
- -u:显示 UDP 连接
- -l:显示监听的端口
- -n:以数字形式显示端口(不解析服务名称)
使用 netstat 显示服务名称:
netstat -tulnp
- -p:显示进程 ID 和进程名称
示例输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
tcp6 0 128 :::22 :::* LISTEN 1234/sshd
- 使用 lsof 命令
lsof(List Open Files)是一个列出系统上所有打开文件的工具,网络端口也被视为文件。通过使用 lsof 可以查看哪些进程占用了哪些端口。
查看所有监听端口:
sudo lsof -i -P -n | grep LISTEN
- -i:显示网络连接
- -P:显示端口号而不是服务名称
- -n:显示 IP 地址而不是解析域名
- 使用 ufw 命令(如果启用了防火墙)
如果你的 Ubuntu 系统使用了 ufw(Uncomplicated Firewall)作为防火墙管理工具,你可以查看哪些端口被允许通过防火墙。
查看当前 ufw 防火墙规则:
sudo ufw status
示例输出:
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
这里表示端口 22 和 80 是允许通过防火墙的。
- 使用 nmap 命令(远程检查端口)
nmap 是一个强大的网络扫描工具,可以用来扫描本地或远程主机的开放端口。如果你想扫描自己机器上的开放端口,可以执行以下命令:
扫描本地机器:
sudo nmap -sT localhost
- -sT:进行 TCP 连接扫描,检查开放的端口。
扫描指定的端口范围:
sudo nmap -p 1-65535 localhost
- -p:指定端口范围。
总结
- ss -tuln:查看所有监听的端口(推荐方法)。
- netstat -tuln:查看所有监听的端口。
- lsof -i -P -n | grep LISTEN:列出所有监听端口的进程。
- ufw status:查看 ufw 防火墙配置的开放端口。
- nmap:远程扫描开放端口。