哪个端口被哪个服务占用?有多少个开放端口?本文介绍如何扫描 Linux 系统或任何远程系统上开放的
端口。
无论您是使用 Linux 作为服务器还是桌面环境,了解开放的端口或正在使用的端口在各种情况下都会有所
帮助。
例如,如果您正在运行基于 Apache 或 Ngnix 的 Web 服务器,则使用的端口应该是 80 或 443。检查
端口将确认这一点。同样,您可以检查 SMTP 或 SSH 或其他一些服务正在使用哪个端口。在将端口分配
给新服务时,了解哪些端口正在使用是很有必要的。
您还可以检查是否有端口被用于安全入侵。
在 Linux 中有多种检查端口的方法。我将在本文中分享我最喜欢的两种方法。
方法一:使用 lsof 命令查看当前登录的 Linux 系统中打开的端口
如果您直接或通过 SSH 登录到系统,则可以使用 lsof 命令检查其端口。
sudo lsof -i -P -n
lsof 命令用于查找用户使用的文件和进程。这里用到的选项是:
-i:如果没有指定 IP 地址,这个选项选择列出所有网络文件-P:禁止将端口号转换为端口名称, 如 3306
转为 MySQL-n:禁止 IP 转换为 hostname,缺省是不加上-n 参数
然而,上面命令也向我们展示了许多计算机实际上并未监听的额外端口。
您可以将此命令的输出通过管道传输到 grep 命令并匹配模式“LISTEN”,如下所示:
sudo lsof -i -P -n | grep LISTEN
这样只会显示我们的计算机正在监听的端口以及哪个服务正在使用所述开放端口。
方法二:使用 netcat 命令检查任何服务器上的端口
nc (Netcat) 是一个命令行实用程序,它使用 TCP 和 UDP 协议通过网络在计算机之间读取和写入数据。
下面给出了 nc 命令的语法: