< 返回新聞公共列表

linux查看端口是否開(kāi)放的兩種常用方法

發(fā)布時(shí)間:2023-05-11 15:13:02

無(wú)論我們是將Linux用作服務(wù)器還是桌面,了解開(kāi)放端口或正在使用的端口在各種情況下都會(huì)有所幫助。例如,如果我們正在運(yùn)行基于 Apache或Ngnix的Web服務(wù)器,則使用的端口應(yīng)為80或443。檢查端口將確認(rèn)這一點(diǎn)。同樣,我們可以檢查SMTP或SSH或其他一些服務(wù)正在使用哪個(gè)端口。在將端口分配給新服務(wù)時(shí),了解哪些端口正在使用會(huì)很有幫助。


在linux中有多種檢查端口的方法,這里小編給大家分享linux查看端口是否開(kāi)放的兩種常用方法。


方法一:使用lsof命令查看Linux服務(wù)器開(kāi)放的端口

如果我們直接或通過(guò)SSH登錄系統(tǒng),則可以使用lsof命令檢查其端口。

sudo lsof -i -P -n

此lsof命令用于查找用戶使用的文件和進(jìn)程。這里使用的選項(xiàng)是:

-i:如果沒(méi)有指定IP地址,這個(gè)選項(xiàng)選擇所有網(wǎng)絡(luò)文件的列表

-P:禁止將端口號(hào)轉(zhuǎn)換為網(wǎng)絡(luò)文件的端口名

-n:禁止將網(wǎng)絡(luò)號(hào)轉(zhuǎn)換為網(wǎng)絡(luò)文件的主機(jī)名

這樣,它將在Linux終端中列出打開(kāi)的端口:


645c953444c3c.png


但是,這也向我們展示了計(jì)算機(jī)實(shí)際上并未監(jiān)聽(tīng)的許多額外端口。

我們可以通過(guò)將此輸出傳遞給grep命令并匹配模式“LISTEN”來(lái)列出偵聽(tīng)端口,如下所示:

sudo lsof -i -P -n | grep LISTEN

這只會(huì)顯示我們的計(jì)算機(jī)正在主動(dòng)偵聽(tīng)的端口以及正在使用所述開(kāi)放端口的服務(wù)。


方法二:使用netcat命令查看Linux服務(wù)器開(kāi)放的端口

nc (Netcat)是一個(gè)命令行實(shí)用程序,它使用TCP和UDP協(xié)議通過(guò)網(wǎng)絡(luò)在計(jì)算機(jī)之間讀取和寫(xiě)入數(shù)據(jù)。下面給出的是命令的語(yǔ)法nc:

nc [options] host port

這個(gè)實(shí)用程序有一個(gè)漂亮的-z標(biāo)志。使用時(shí),它將掃描nc偵聽(tīng)守護(hù)進(jìn)程,而不會(huì)實(shí)際向端口發(fā)送任何數(shù)據(jù)。

將它與-v標(biāo)志結(jié)合起來(lái),啟用詳細(xì)信息,我們可以獲得詳細(xì)的輸出。

以下是我們可以使用以下命令掃描開(kāi)放端口的命令nc:

nc -z -v <IP-ADDRESS> 1-65535 2>&1 | grep -v 'Connection refused'

替換IP-ADDRESS為我們正在檢查端口的Linux系統(tǒng)的IP地址。

至于為什么我選擇值1到65535,那是因?yàn)槎丝诜秶鷱拈_(kāi)始1到結(jié)束65535。

最后,將輸出通過(guò)管道傳遞給grep命令。使用該-v選項(xiàng)排除任何將“連接被拒絕”作為匹配模式的行。

這將顯示計(jì)算機(jī)上打開(kāi)的所有端口,網(wǎng)絡(luò)上的另一臺(tái)計(jì)算機(jī)可以訪問(wèn)這些端口。


總結(jié):linux查看端口是否開(kāi)放的這兩種方法中,lsof命令比nc命令更快。如果我們正在管理系統(tǒng),lsof命令是更合適的選擇。nc命令具有無(wú)需登錄即可掃描端口的靈活性。這兩個(gè)命令都可用于根據(jù)我們所處的場(chǎng)景查看Linux中的開(kāi)放端口。


/template/Home/Zkeys724/PC/Static