
在 Linux 中,端口是一个编号的网络连接,它允许设备通过 Internet 或本地网络与其他设备通信。确保端口是开放和可访问的非常重要,它确保网络业务的正常运行。在本文中,我们将讨论五个检查 Linux 中端口是否打开的常用方法。
Check Open Port on Remote Host
首先,检查一个端口是否打开并在远程主机上侦听。
Using nc Command
nc 命令允许您向端口发送数据,并查看是否收到响应。nc 命令基本语法如下:
nc -vz hostname port
例如,要检查主机 example.com 上的 22 端口是否打开,可以使用以下命令:
nc -vz example.com 22
如果端口打开,您将看到消息 "Connection to hostname port [ tcp/ssh ]succeeded"。如果端口关闭,您将看到消息 "Connection to hostname port [ tcp/ssh ] failed: Connection refused"。
Using telnet Command
telnet 命令用于连接到远程主机上的端口,看看是否建立了连接。查询端口是否打开,使用以下语法:
telnet hostname port
例如,要检查主机 www.example.com 上的 80 端口是否打开,可以使用以下命令:
telnet www.example.com 80
如果端口是打开的,您将看到一个空白屏幕。要退出,请按 CTRL + ],然后键入 quit。如果端口关闭,您将看到 "Connected to hostname. Escape character is '^]'. Connection closed by foreign host"
Using nmap Command
nmap 命令是一个执行网络扫描和探测的实用程序,它可以通过端口扫描来检查目标主机端口是否打开。要检查端口是否打开,使用以下语法:
nmap -p port hostname
例如,要检查主机 www.example.com 上的 80 端口是否打开,可以使用以下命令:
nmap -p 80 www.example.com
如果端口是打开的,您将在输出中看到一行,表明端口是打开的。如果端口已关闭,您将看到一行,指示端口已关闭。
Shell Script to Check Port Status
您可以创建一个 bash 脚本检查本地或远程主机上端口是否打开,示例脚本如下:
#!/usr/bin/env bash
HOST=192.168.10.100 #remote host
PORT=22 # Port to check
nc -z ${HOST} ${PORT}
if [ $? -eq 0 ]
then
echo "Port is open"
else
echo "Port is closed"
fi
这里 HOST 是远程或本地主机系统的主机名或 IP 地址。PORT 是要检查的端口号。,nc 命令可以连接到主机上的任何端口并返回状态。$? 是一个系统环境变量,包含最后一个命令的退出状态。

Check Listening Port on Localhost
很多时候,我们需要检查本地机器上是否有端口正在侦听。
Using lsof Command
lsof 命令是一个实用程序,用于显示有关打开文件的信息。要检查端口是否打开,使用以下语法:
lsof -i :port
例如,要检查 80 端口是否打开,可以使用以下命令:
lsof -i :80
如果端口打开,将看到一行,包含端口号和使用该端口的进程的名称。如果端口关闭,将看不到任何输出。
Using ss Command
ss 命令是一个显示网络套接字信息的实用程序。要检查端口是否打开,使用以下语法:
ss -lnp | grep port
例如,要检查 80 端口是否打开,可以使用以下命令:
ss -lnp | grep 80
如果端口打开,将看到一行,其中包含端口号和状态 LISTEN。如果端口关闭,将看不到任何输出。
注意: 您可能需要使用 sudo 来运行这些命令,这取决于您的系统配置。
