< 返回新聞公共列表

linux查看端口是否開放的兩種常用方法

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

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


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


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

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

sudo lsof -i -P -n

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

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

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

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

這樣,它將在Linux終端中列出打開的端口:


645c953444c3c.png


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

我們可以通過將此輸出傳遞給grep命令并匹配模式“LISTEN”來列出偵聽端口,如下所示:

sudo lsof -i -P -n | grep LISTEN

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


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

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

nc [options] host port

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

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

以下是我們可以使用以下命令掃描開放端口的命令nc:

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

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

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

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

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


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


/template/Home/Zkeys724/PC/Static