linux查看端口 Linux查看服务端口


如何查询端口使用情况及开放端口数量?本文将指导您掌握扫描Linux系统或任何远程系统上开放端口的方法。

无论您是使用Linux作为服务器还是桌面环境,了解系统端口的占用情况总是十分有用。

比如,若您的服务器运行着基于Apache或Nginx的网页服务,那么应当使用的端口是80或443。通过检查端口,您可以确认服务的正常运行。您也可以查看TP、SSH或其他服务的端口占用情况。

在分配新服务使用的端口时,了解哪些端口正在被使用是十分重要的。

定期检查是否有端口被非法入侵者也具有安全意义。

在Linux系统中,存在多种检查端口的方法。下面我将分享两种我常用的方法。

第一种方法是使用lsof命令来查看其端口情况。lsof是一个用于寻找用户使用的文件和进程的工具。

  • -i 选项用于在没有指定IP地址时列出所有网络文件。
  • -P 选项禁止将端口号转换为如3306对应的MySQL名称。
  • -n 选项禁止将IP地址转换为hostname(主机名)。

需要注意的是,lsof命令有时会显示出一些系统实际上并未的额外端口。

为了更精确地获取信息,可以将lsof命令的输出通过管道传输给grep命令,并匹配“LISTEN”模式。这样操作后,只会显示系统当前正在的端口以及对应的服务。

另一种方法是使用nc(Netcat)命令。这是一个命令行实用程序,能够通过TCP和UDP协议在计算机之间读写数据。

nc命令的语法中有一个-z标志。当使用时,它将使nc仅扫描守护程序而不实际向端口发送任何数据。

结合-v标志并启用详细模式,您可以获得详细的输出信息。

以下是使用nc命令扫描系统开放端口的示例命令:将IP-ADDRESS替换为您要检查端口的Linux系统的IP地址。

我选择扫描端口范围从1到65535,是因为端口的范围就是从1开始到65535结束。

最终,将输出再次通过管道传递给grep命令,并使用-v选项排除任何返回“Connection refused”的行。这样便可显示出网络上另一台计算机可访问的该计算机上的所有开放端口(在防火墙允许的情况下)。

在我个人偏好中,我更加倾向于使用lsof命令。它在大多数情况下速度更快。为了使用lsof,您需要登录系统并拥有sudo访问权限。也就是说,如果您正在管理系统,那么lsof是更好的选择。

相比之下,nc命令提供了无需登录即可扫描端口的灵活性。尽管在扫描远程主机时可能需要网络交互而相对较慢,特别是当面临超时请求时,您可以使用-q secs参数来设置超时时间。

无论您选择哪种方法,了解系统端口的占用情况都是维护系统安全与稳定的重要一环。