在Linux服務器管理中,了解服務器上開放的端口和啟用的端口是非常重要的。開放的端口可能意味著服務正在運行,而啟用的端口則可能意味著服務已經配置好但尚未啟動。本文將詳細介紹如何在Linux系統中查看服務器開放的端口和啟用的端口。
netstat
命令查看開放的端口netstat
是一個強大的網絡工具,可以用來查看網絡連接、路由表、接口統計信息等。通過netstat
命令,我們可以查看服務器上所有開放的端口。
要查看服務器上所有開放的端口,可以使用以下命令:
netstat -tuln
-t
:顯示TCP端口。-u
:顯示UDP端口。-l
:顯示監聽中的端口。-n
:以數字形式顯示地址和端口號。執行該命令后,你將看到類似以下的輸出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
在這個輸出中,Local Address
列顯示了服務器上開放的端口。例如,0.0.0.0:22
表示服務器正在監聽所有IP地址的22端口(SSH服務),0.0.0.0:80
表示服務器正在監聽所有IP地址的80端口(HTTP服務)。
如果你只想查看TCP或UDP協議的端口,可以使用以下命令:
netstat -tln
netstat -uln
如果你想查看某個特定服務(如SSH)的端口,可以使用grep
命令進行過濾:
netstat -tuln | grep :22
這將只顯示與22端口相關的信息。
ss
命令查看開放的端口ss
是netstat
的替代工具,功能更強大,性能更好。ss
命令也可以用來查看服務器上開放的端口。
要查看服務器上所有開放的端口,可以使用以下命令:
ss -tuln
-t
:顯示TCP端口。-u
:顯示UDP端口。-l
:顯示監聽中的端口。-n
:以數字形式顯示地址和端口號。執行該命令后,你將看到類似以下的輸出:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 :::80 :::*
在這個輸出中,Local Address:Port
列顯示了服務器上開放的端口。例如,0.0.0.0:22
表示服務器正在監聽所有IP地址的22端口(SSH服務),0.0.0.0:80
表示服務器正在監聽所有IP地址的80端口(HTTP服務)。
如果你只想查看TCP或UDP協議的端口,可以使用以下命令:
ss -tln
ss -uln
如果你想查看某個特定服務(如SSH)的端口,可以使用grep
命令進行過濾:
ss -tuln | grep :22
這將只顯示與22端口相關的信息。
lsof
命令查看開放的端口lsof
是一個列出當前系統打開文件的工具。由于在Linux中,一切皆文件,網絡連接也被視為文件,因此lsof
也可以用來查看服務器上開放的端口。
要查看服務器上所有開放的端口,可以使用以下命令:
lsof -i -P -n
-i
:顯示網絡連接。-P
:顯示端口號而不是服務名稱。-n
:顯示IP地址而不是主機名。執行該命令后,你將看到類似以下的輸出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
apache2 2345 www-data 3u IPv4 23456 0t0 TCP *:80 (LISTEN)
在這個輸出中,NAME
列顯示了服務器上開放的端口。例如,*:22
表示服務器正在監聽所有IP地址的22端口(SSH服務),*:80
表示服務器正在監聽所有IP地址的80端口(HTTP服務)。
如果你只想查看TCP或UDP協議的端口,可以使用以下命令:
lsof -iTCP -P -n
lsof -iUDP -P -n
如果你想查看某個特定服務(如SSH)的端口,可以使用grep
命令進行過濾:
lsof -i -P -n | grep :22
這將只顯示與22端口相關的信息。
nmap
命令掃描開放的端口nmap
是一個網絡掃描工具,可以用來掃描服務器上開放的端口。與前面的命令不同,nmap
不僅可以查看本地服務器上的端口,還可以掃描遠程服務器上的端口。
要掃描本地服務器上開放的端口,可以使用以下命令:
nmap localhost
執行該命令后,你將看到類似以下的輸出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-01 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
在這個輸出中,PORT
列顯示了服務器上開放的端口。例如,22/tcp
表示服務器正在監聽22端口(SSH服務),80/tcp
表示服務器正在監聽80端口(HTTP服務)。
要掃描遠程服務器上開放的端口,可以使用以下命令:
nmap 192.168.1.100
將192.168.1.100
替換為你要掃描的遠程服務器的IP地址。
啟用的端口通常是指已經配置在服務器上但尚未啟動的服務端口。要查看這些端口,可以檢查服務器的配置文件。
/etc/services
文件/etc/services
文件包含了系統中所有已知的服務及其對應的端口號。你可以使用以下命令查看該文件:
cat /etc/services
在這個文件中,你可以找到所有已知的服務及其端口號。例如:
ssh 22/tcp
http 80/tcp
/etc/xinetd.d/
目錄如果你的服務器使用xinetd
作為超級服務器,你可以查看/etc/xinetd.d/
目錄中的配置文件來了解哪些服務已經配置但尚未啟動。
ls /etc/xinetd.d/
在這個目錄中,每個文件代表一個服務。你可以查看這些文件來了解哪些服務已經配置但尚未啟動。
systemctl
管理的服務如果你的服務器使用systemd
作為初始化系統,你可以使用systemctl
命令來查看哪些服務已經啟用但尚未啟動。
systemctl list-unit-files --type=service | grep enabled
這將列出所有已經啟用的服務。你可以進一步查看這些服務的配置文件來了解它們使用的端口。
在Linux服務器管理中,查看服務器上開放的端口和啟用的端口是非常重要的。通過使用netstat
、ss
、lsof
和nmap
等工具,你可以輕松地查看服務器上開放的端口。而通過查看/etc/services
文件、/etc/xinetd.d/
目錄和systemctl
管理的服務,你可以了解哪些端口已經配置但尚未啟動。掌握這些工具和方法,將有助于你更好地管理和維護Linux服務器。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。