当前位置: 首页 > 科技观察

Linux如何查看已占用和打开的端口_0

时间:2023-03-18 17:27:18 科技观察

无论您是将Linux用作服务器还是桌面环境,了解哪些端口是打开的或正在使用的在各种情况下都会有所帮助。例如,如果您正在运行基于Apache或Ngnix的Web服务器,则使用的端口应为80或443。检查端口将确认这一点。同样,您可以检查SMTP或SSH或其他一些服务正在使用哪个端口。将端口分配给新服务时,了解哪些端口正在使用非常有用。您还可以检查是否有任何端口被用于安全入侵。在Linux中有多种检查端口的方法。我将在本文中分享我最喜欢的两种方法。方法一:使用lsof命令查看当前登录的Linux系统开放的端口如果是直接登录或者通过SSH登录系统,可以使用lsof命令查看其端口。sudolsof-i-P-nlsof命令用于查找用户使用的文件和进程。这里用到的选项有:i:如果没有指定IP地址,该选项选择列出所有网络文件P:禁止将端口号转为端口名,如3306转MySQLn:禁止将IP转为主机名,默认为no-n参数但是,上面的命令还向我们显示了计算机实际上没有监听的许多额外端口。您可以将此命令的输出通过管道传递给grep命令并匹配模式“LISTEN”,如下所示:sudolsof-i-P-n|grepLISTEN这只会向您显示我们的计算机正在侦听哪些端口以及使用上述开放端口的服务。方法二:使用netcat命令检查任何服务器上的端口nc(Netcat)是一个命令行实用程序,它使用TCP和UDP协议通过网络在计算机之间读取和写入数据。nc命令的语法如下:nc[options]hostport该实用程序有一个-z标志。使用时,它会导致nc扫描侦听守护进程,而不实际向端口发送任何数据。将它与-v标志结合使用以启用详细模式,您可以获得详细输出。下面是使用nc命令扫描系统开放端口的命令:nc-z-v1-655352>&1|grep-v'Connectionrefused'将IP-ADDRESS替换为您正在检查端口的Linux系统的IP地址。可以是本地ip127.0.0.1,也可以是远程机器的ip地址。至于为什么我选择值1到65535,那是因为端口范围从1开始到65535结束。最后,将输出通过管道传递给grep命令。使用-v选项,它会排除任何包含“Connectionrefused”的返回行。这将显示计算机上打开的所有端口,这些端口可以被网络上的另一台计算机访问(如果防火墙允许的话)。结论在这两种方法中,我更喜欢lsof命令。它比nc命令更快。但是,您需要登录系统并具有sudo访问权限。换句话说,如果您正在管理一个系统,lsof是更合适的选择。nc命令具有无需登录即可扫描端口的灵活性,但在扫描远程主机时会比较慢,因为需要网络交互,尤其是面临超时请求时,可以使用-qsecs参数设置超时时间。