使用lsof检查当前系统开放的端口
不管你是直接登录的系统,还是使用ssh连接的,都可以使用lsof命令来检查端口:
sudolsof-i-P-n
该命令用于查找用户使用的文件和进程。上述命令中的选项,包括:
-i:如果没有指定IP地址,那么此选项就会选择所有网络文件的列表;
-P:禁止将网络文件的端口号转换为端口名;
-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'
将上面的替换为你要检查的Linux系统的IP地址。
至于为什么我会选择1到65535,那是因为端口的范围是1到65535。
最后,通过管道将输出传到grep,使用-v选项可以排除“拒绝连接(Connectionrefused)”的端口。
这样就会扫描到计算机上所有开放的端口,这些端口可以被网络上的其他机器访问。
以上两种方法中,lsof比nc速度要快。但是使用lsof需要先登录到系统中,并且具有sudo访问权限。所以,如果你扫描的是你已经登录到的系统,可以优先选择lsof。
nc命令可以很灵活的扫描端口,而不需要登录。
|