Hostwinds 博客

寻找结果为:


在Linux上检查开放端口的5种方法 特色图片

在Linux上检查开放端口的5种方法

通过: Hostwinds Team  /  一月 14, 2025


端口就像门口,允许Linux系统上的应用程序和程序发送和接收数据。如果您想查看正在使用的端口,哪些端口是打开的,或者只是弄清楚网络正在发生的事情,那么您来了。

在本指南中,我们将浏览多种方式,使用简单命令在Linux中检查端口。最后,您会感到更自在地与港口合作,并知道系统上正在发生的事情。

什么是端口?

在跳入命令之前,让我们花点时间了解什么是端口:

  • 端口是标识计算机上运行的特定程序或应用程序的数字。例如:
    • Web服务器端口 通常使用 港口80 (http)或 港口443 (https)。
    • 通过SSH远程登录通常使用 港口22.
  • 每个端口都有一个数字 0和65535,分为三个主要群体:
    • 0–1023:保留用于HTTP和FTP等常见协议。
    • 1024–49151:对于您安装的应用程序。
    • 49152–65535:当应用连接到服务时使用的临时端口。

这样一来,让我们探索如何检查端口发生的事情。

如何在Linux中检查端口

Linux有许多工具可以帮助您检查打开或收听端口。下面,我们将介绍五种常见方法,并解释每种方法的作用。

1。使用netstat

NetStat命令为您提供了网络连接和端口使用情况的详细视图。

打开终端和类型:

netstat -tuln

这是每个选项的含义:

  • -t:显示TCP(传输控制协议)端口。
  • -u:显示UDP(用户数据报协议)端口。
  • -l:仅显示积极聆听的端口。
  • -n:跳过将程序名称(例如" SSH")转换为端口号,这使其更快。

您会看到什么:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*

这是阅读的方法:

  • 原始: 显示是TCP还是UDP。
  • 本地地址: 您的机器的IP和使用的端口。
  • 国外地址: 另一台计算机的IP和端口(如果对所有机器打开)。
  • 状态: 对于TCP,聆听意味着它正在等待连接。

快速注意: Netstat是Net-Tools软件包的一部分,可能不会在较新的Linux版本上预安装。使用:

sudo apt install net-tools  # On Debian/Ubuntu  
sudo yum install net-tools  # On RHEL/CentOS 

2。使用SS

ss 是Netstat的更新,更快的替代品。它提供了类似的信息,但在现代系统上可以更好地工作。

运行以下命令:

ss -tuln

选项与NetStat相同,因此您应该可以直接跳入。

您会看到什么:

Netid   State      Recv-Q Send-Q Local Address:Port           Peer Address:Port
tcp     LISTEN     0      128    0.0.0.0:22                  0.0.0.0:*         
udp     UNCONN     0      0      0.0.0.0:68                  0.0.0.0:*

该输出类似于Netstat,但是 ss 往往会更快,尤其是当您处理很多连接时。

3。使用LSOF

lsof (列表打开文件)是一个方便的工具,可查看进程使用哪些文件或网络连接。

要查看哪些端口是打开的以及使用它们的是什么,请运行:

sudo lsof -i -P -n
  • -一世:用于网络相关文件的过滤器。
  • -p:显示原始端口号而不是服务名称。
  • -n:跳过将IP地址转换为主机名的速度。

您会看到什么:

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234 root   3u  IPv4  12345      0t0  TCP *:22 (LISTEN)
dhclient  5678 root   6u  IPv4  54321      0t0  UDP *:68
  • 命令:使用端口的程序。
  • pid:过程ID。
  • 姓名:端口和协议(例如,端口22上的TCP)。

为什么有用:

如果您要进行故障排除,并且需要找出使用特定端口的哪个过程, lsof 是您的首选工具。

4。使用nmap

nmap (网络映射器)是扫描网络和检查哪些端口打开的理想选择。

要扫描所有端口,请运行:

sudo nmap -sT -p- localhost
  • -英石:执行TCP连接扫描。
  • -p-:扫描所有65,535个端口。

您会看到什么:

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
  • 港口:端口号和协议(TCP或UDP)。
  • 状态:告诉您端口是开放,关闭还是过滤(被防火墙阻塞)。
  • 服务:使用端口的服务的通用名称。

为什么NMAP有用:

nmap 如果您希望完整地查看系统上的所有开放端口,或者需要扫描另一台机器,那就太好了。

5。使用NC(NetCat)

Netcat 是一个简单但功能强大的工具,用于检查特定端口是否打开。

要检查端口22是否打开,请输入:

nc -zv localhost 22
  • -Z:只需扫描开放端口而无需发送数据即可。
  • -v:显示详细的输出。

您会看到什么:

Connection to localhost 22 port [tcp/ssh] succeeded!

为什么有用:

如果您只需要快速检查特定端口是否打开, NC 这项工作毫不费力。

理解结果

当您检查端口时,结果通常意味着:

  • 听/打开端口: 这些端口已准备好接受连接。例如,Web服务器将在端口80或443上收听。
  • 关闭端口: 这些端口没有使用,因此它们不会接受连接。
  • 过滤端口: 这些端口被防火墙或安全规则所阻挡,因此它们看起来不可见。

常见的情况

检查端口时,您可能会遇到以下情况:

  • 您会看到一个您没想到的港口开放: 这可能意味着正在运行您不需要或识别的程序。进一步调查是一个好主意。
  • 您需要关闭的端口: 该程序可能没有运行,或者防火墙可能会阻止它。

确保您的系统

检查端口只是第一步。这里有几种整理事情的方法:

停止不必要的程序:
如果程序在您不需要的端口上运行,请将其关闭:

sudo systemctl stop <service_name>
sudo systemctl disable <service_name>

使用防火墙:
使用UFW(简单的防火墙)等工具限制访问端口的访问:

sudo ufw allow 22     # Allow SSH  
sudo ufw deny 80      # Block HTTP

定期监视端口:
养成不时检查开放端口的习惯,尤其是在您运行服务器时。

包起来

检查Linux中的端口不必复杂。无论您是使用Netstat,SS,LSOF,NMAP还是NC,每个工具都可以使您对正在发生的事情有所不同。选择最适合您需求的方法,不要害怕探索。您练习的次数越多,就越容易!

撰写者 Hostwinds Team  /  一月 14, 2025