当前位置:首页 > 云服务器 > 正文

如何查看服务器当前已打开的所有端口及对应进程?

在服务器管理中,查看已打开的端口是排查网络问题、安全审计和服务管理的基础操作,端口是服务器与外部通信的入口,不同端口对应不同的服务或应用程序,了解端口状态有助于及时发现异常访问、未授权服务或安全漏洞,以下是查看服务器打开端口的详细方法,涵盖不同操作系统和工具的使用场景。

基于Linux系统的端口查看方法

Linux系统提供了多种命令行工具来查看端口状态,最常用的包括netstat、ss和lsof。

使用netstat命令

netstat是传统的网络工具,可显示网络连接、路由表、接口统计等信息,查看打开端口的基本命令为:

netstat tulnp

  • t:显示TCP端口
  • u:显示UDP端口
  • l:仅显示监听端口
  • n:以数字形式显示地址和端口,避免DNS解析
  • p:显示进程ID和进程名称(需root权限)

输出结果可能如下:

Active Internet connections (only servers) Proto RecvQ SendQ Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp6 0 0 :::80 :::* LISTEN 5678/nginx udp 0 0 0.0.0.0:68 0.0.0.0:* 9012/dhclient

Local Address列显示监听地址和端口,State为LISTEN表示端口处于监听状态,PID/Program name指明占用端口的进程。

使用ss命令

ss是netstat的替代工具,速度更快且功能更强大,推荐在Linux新版本中使用,基本命令为:

ss tulnp

参数与netstat类似,输出格式更简洁。

Netid State RecvQ SendQ Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3)) tcp LISTEN 0 511 :::80 :::* users:(("nginx",pid=5678,fd=7)) udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* users:(("dhclient",pid=9012,fd=5))

使用lsof命令

lsof(list open files)可列出打开的文件、目录和网络连接,查看端口时需结合i参数:

lsof i :端口号

查看80端口的使用情况:

如何查看服务器当前已打开的所有端口及对应进程? 第1张

输出结果会显示进程ID、用户、协议和连接状态等信息。

基于Windows系统的端口查看方法

Windows系统主要通过图形界面和命令行工具查看端口。

使用任务管理器

  • 按Ctrl+Shift+Esc打开任务管理器,切换到“性能”选项卡。
  • 点击“打开资源监视器”,展开“网络”部分的“TCP连接”或“UDP连接”。
  • 可查看本地地址、端口、远程地址及对应的进程。

使用netstat命令

Windows的netstat命令与Linux类似,但参数略有不同,常用命令:

netstat ano

  • a:显示所有连接
  • n:以数字形式显示地址和端口
  • o:显示进程ID(PID)

输出中Local Address列的80表示80端口开放,State为LISTENING表示监听状态,PID列指明进程ID,可通过任务管理器查看PID对应的进程名称。

使用PowerShell命令

PowerShell提供了更强大的端口查询功能,

如何查看服务器当前已打开的所有端口及对应进程? 第2张

GetNetTCPConnection State Listen | SelectObject LocalAddress, LocalPort, OwningProcess

该命令可列出所有监听状态的TCP连接及其本地地址、端口和进程ID。

端口状态分类与常见问题

端口状态可分为以下几类:

  • LISTEN:端口处于监听状态,等待连接请求。
  • ESTABLISHED:端口已建立连接,正在进行数据传输。
  • TIME_WAIT:连接已关闭,但仍在等待确认。
  • CLOSED:端口未开放或连接已关闭。

常见问题包括:

  1. 端口被占用:若需启动的服务提示端口被占用,可通过netstat或ss找到占用进程,终止进程或修改服务端口。
  2. 端口未开放:若外部无法访问服务器端口,需检查防火墙规则(如Linux的iptables或Windows的Windows Defender Firewall),确保端口已允许入站连接。

相关问答FAQs

Q1: 如何查看特定端口的占用情况?

A1: 可使用netstat tuln | grep :端口号(Linux)或netstat ano | findstr :端口号(Windows)过滤特定端口,Linux下查看80端口:netstat tuln | grep :80;Windows下:netstat ano | findstr :80。

Q2: 如何关闭不需要的监听端口?

A2: 关闭端口需先停止对应的服务或进程,若Apache占用80端口,可通过systemctl stop apache2(Linux)或服务管理器停止Apache服务;若需强制终止进程,可使用kill 9 PID(Linux)或taskkill /PID PID /F(Windows),检查防火墙规则确保端口未重新开放。

如何查看服务器当前已打开的所有端口及对应进程? 第3张

0