Linux检测远程服务器端口的几种方法

发布时间 2023-10-08 16:59:05作者: 全琪俊

1,telnet命令检测

telnet是Windows和Linux上最常用的检查端口的命令。此命令的简单用法是telnet ip地址(或者域名) 端口。如果执行telnet 命令提示命令未发现,请执行"yum install telnet"。

[root@localhost etc]# telnet www.baidu.com 443

 

通过上图可以看出,百度https服务是打开着的,所以能够访问百度首页。如果远程服务器上的端口未打开。会提示以下报错。

从上图可以看出百度服务器上的3389未打开的。

2,nc命令检测

nc或netcat是一个实用程序,可以做很多TCP和UDP相关的事情,包括数据包传输,端口扫描等。要检查端口是否打开,如果执行nc提示命令未发现,执行"yum install nc"安装。接着可以通过执行以下命令"nc -vz IP地址或域名 端口"检测。

[root@localhost ~]# nc -vz www.baidu.com 443

 

如果远程服务器的端口未打开,或者服务器未启用,则会提示一个连接超时的错误,报错如下。

 

 

从上图中可以看出,检测服务器的3389端口显示连接超时,说明未开启服务。

3,nmap命令检测

nmap是一个用于网络扫描的开源实用程序。它不仅可以用于扫描打开的端口,还可以执行更多操作。 它可用于一次检查多个主机和端口。 该命令需要通过执行“yum install nmap”安装。

[root@localhost ~]# nmap www.baidu.com

 

从上图上可以看出远程服务器有俩端口是打开的。

4,执行/dev/tcp检测

Linux中所有内容都是文件,并且主机和端口的状态也可通过文件处理程序获得。如果没有上面几种可用的telnet或 nc(在 docker 容器中经常看到没有这些命令),则可以使用此方法检查远程端口是否打开。

语法格式为:

echo > /dev/tcp/[host]/[port] && echo "Port is open"
echo > /dev/udp/[host]/[port] && echo "Port is open"

上面的命令取决于远程服务是使用的哪种协议,是tcp还是udp协议,比如ssh是tcp协议,smtp使用的udp协议。具体可以使用对应的协议进行连接。命令使用方式如下。

[root@localhost ~]# echo > /dev/tcp/www.baidu.com/443 && echo "Port is open"

 

[root@localhost ~]# echo > /dev/tcp/www.baidu.com/3389 && echo "Port is open"

 

从上面的图上可以看出远程服务器端口是开着的会打印出“Port is open” ,如果没有打开的话会提示“Connection refused”。