1. 使用 netstat 查看端口与进程
netstat 是查看网络连接和监听端口的常用工具。通过以下命令可以列出所有开放的TCP/UDP端口及其关联的进程:
sudo netstat -tulnp
参数解析:
-t:显示TCP端口。
-u:显示UDP端口。
-l:仅显示监听状态的端口。
-n:以数字形式显示地址和端口(不解析域名)。
-p:显示占用端口的进程名称和PID。
输出示例:
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
这里可以看到端口22由sshd进程监听,对应SSH服务14。
2. 通过 lsof 命令定位应用
lsof 用于列出系统打开的文件(包括网络端口)及其关联进程:
sudo lsof -i :端口号
示例:
sudo lsof -i :80
输出会显示占用端口80的进程(如Apache或Nginx)16。
3. 使用 nmap 扫描端口及服务
nmap 是一款网络扫描工具,可以识别端口对应的服务名称:
sudo nmap -sV localhost
参数解析:
-sV:探测端口上的服务版本。
输出示例:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1
80/tcp open http Apache httpd 2.4.41
此命令会显示开放的端口、服务名称及版本信息110。
4. 检查防火墙规则(ufw)
Ubuntu自带的防火墙工具ufw可以查看已开放的端口:
sudo ufw status verbose
输出示例:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
此命令列出防火墙允许的端口,但需结合其他工具(如netstat)确认实际运行的应用程序610。
5. 结合 ss 命令(替代 netstat)
对于较新的Ubuntu版本(如25.04),ss命令可能更高效:
sudo ss -tulnp
输出格式与netstat类似,显示端口、状态及进程信息5。
常见端口与应用对应表
端口号 协议 常见应用 说明
22 TCP SSH 远程登录服务
80 TCP HTTP (Apache/Nginx) Web服务
443 TCP HTTPS 加密的Web服务
3306 TCP MySQL 数据库服务
5432 TCP PostgreSQL 数据库服务
注意事项
权限要求:部分命令(如netstat -p、lsof)需要sudo权限以查看所有进程信息。
防火墙干扰:即使端口被应用程序监听,若防火墙未放行,外部仍无法访问。需通过ufw allow 端口开放610。
服务未运行:防火墙开放端口后,若没有程序监听该端口,连接仍会失败。需通过netstat或ss确认监听状态14。