如何检查Linux或者Unix是否正在使用端口
时间:2020-01-09 10:45:57 来源:igfitidea点击:
如何确定在Linux或者类Unix系统下是否正在使用端口?
如何验证Linux服务器上正在侦听哪些端口?
如何使用CLI检查Linux操作系统上的端口是否正在使用?
确认哪些端口正在侦听服务器网络接口上很重要。
您需要注意打开端口以检测入侵。
除了入侵之外,出于故障排除的目的,可能有必要检查服务器上其他应用程序是否已在使用端口。
例如,您可以在同一系统上安装Apache和Nginx服务器。
因此,有必要知道Apache还是Nginx使用的是TCP端口#80/443。
本快速教程提供了使用netstat,nmap和lsof命令检查正在使用的端口并查看正在使用该端口的应用程序的步骤。
如何检查端口是否在使用中
要在Linux上检查侦听端口和应用程序:
- 在Linux上运行以下任一命令以查看打开的端口:
sudo lsof -i -P -n | grep LISTEN
sudo netstat -tulpn | grep LISTEN
sudo lsof -i:22 ## 查看端口22
sudo nmap -sTU -O IP-address-Here
- 对于最新版本的Linux,请使用ss命令。例如,
ss -tulw
让我们详细了解命令及其输出。
选项#1:lsof命令
语法为:
$ sudo lsof -i -P -n $ sudo lsof -i -P -n | grep LISTEN $ doas lsof -i -P -n | grep LISTEN ### [OpenBSD] ###
考虑上面输出的最后一行:
sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22 (LISTEN)
- sshd是应用程序的名称。
- sshd应用程序绑定到的IP地址(10.86.128.138)(LISTEN)
- 22是正在使用的TCP端口(LISTEN)
- 85379是sshd进程的进程ID
选项2:netstat命令
您可以使用netstat检查侦听端口和应用程序,如下所示。
Linux netstat语法
与netrep命令一起运行netstat命令以过滤处于LISTEN状态的端口:
$ netstat -tulpn | grep LISTEN
在Linux上,不建议使用netstat命令一段时间。
因此,您需要使用ss命令,如下所示:
sudo ss -tulw sudo ss -tulwn
其中ss命令选项如下:
-t
:在Linux上仅显示TCP套接字-u
:在Linux上仅显示UDP套接字- -l:显示监听套接字。例如,SSHD服务器打开TCP端口22。
- -p:列出打开套接字的进程名称
-n
:不解析服务名称,即不使用DNS
FreeBSD/MacOS X netstat语法
$ netstat -anp tcp | grep LISTEN $ netstat -anp udp | grep LISTEN
OpenBSD netstat语法
$ netstat -na -f inet | grep LISTEN $ netstat -nat | grep LISTEN
选项#3:nmap命令
语法为:
$ sudo nmap -sT -O localhost $ sudo nmap -sU -O 192.168.1.13 ##[ list open UDP ports ]## $ sudo nmap -sT -O 192.168.1.13 ##[ list open TCP ports ]##
您可以在单个命令中组合TCP/UDP扫描:
$ sudo nmap -sTU -O 192.168.1.13
关于Windows用户的说明
您可以使用以下命令从Windows操作系统检查端口使用情况:
netstat -bano | more netstat -bano | grep LISTENING netstat -bano | findstr /R /C:"[LISTEING]"