作为系统管理员、网络工程师或应用程序开发人员,需要检查远程服务器上的端口是否打开,以确定所检查的服务是否正在运行。在本文中,我们将介绍几种在Linux上检查远程服务器端口是否打开的方法。
telnettelnet是在Windows和Linux上最常用的用于检查端口的命令。该命令的简单用法是:
telnet [主机] [端口]
当端口打开时,输出将如下所示:
Trying 192.168.56.160...
Connected to 192.168.56.160.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
当端口未打开或出现其他问题时,输出将如下所示:
Trying 192.168.56.160...
telnet: Unable to connect to remote host: Connection refused
该命令通常在Linux上可用。
ncnc或netcat是一种实用程序,可以执行许多与TCP和UDP相关的操作,包括数据包传输、端口扫描等。要检查端口是否打开,语法如下:
nc -vz [主机] [端口]
-v用于以详细模式打印输出,-z用于扫描指定端口上的监听服务。
当端口打开时,输出如下:
Connection to 192.168.56.160 22 port [tcp/ssh] succeeded
当端口未打开时,输出如下:
nc: connect to 192.168.56.160 port 443 (tcp) failed: Connection refused
非常直观。
nmapnmap是一种用于网络扫描的开源实用程序。它不仅可以用于扫描开放端口,还可以做更多其他操作。它可以用于同时检查多个主机和端口。该实用程序通常需要显式安装。
基本语法如下:
nmap -p [端口] [主机]
当端口打开时,输出如下:
Nmap scan report for 192.168.56.160
Host is up (0.88s latency).
PORT STATE SERVICE
22/tcp open ssh
当端口未打开时,输出如下:
Nmap scan report for 192.168.56.160
Host is up (1.0s latency).
PORT STATE SERVICE
443/tcp closed https
它不仅可以用于扫描TCP端口,还可以用于扫描UDP端口。它可以提供更多类似上面显示的端口的服务信息。
echo > /dev/tcp/...如果您熟悉Linux,应该知道一切皆文件,主机和端口的状态也可以通过文件处理器获得。如果没有telnet或nc可用(在Docker容器中经常看到),您可以使用此方法来检查远程端口是否打开。语法如下:
echo > /dev/tcp/[host]/[port] && echo "Port is open"
echo > /dev/udp/[host]/[port] && echo "Port is open"
这取决于您尝试的协议类型,命令会有所不同。对于像ssh这样的服务,通常是TCP协议,您可以使用echo > /dev/tcp...
当端口打开时,输出如下所示:
$ echo > /dev/tcp/192.168.56.160/22 && echo "Port is open"
Port is open
当端口未打开时,输出如下所示:
$ echo > /dev/tcp/192.168.56.160/443 && echo "Port is open"
bash: connect: Connection refused
bash: /dev/tcp/192.168.56.160/443: Connection refused
这种方法通常是最后一种,也是最安全的方法,因为它不需要安装外部工具。
除了这些命令之外,还有其他第三方库可以用于检查端口。此外,每种编程语言应该都提供了进行此操作的能力。因此,请选择最适合您需求的方法。