在Linux或類Unix系統下如何確定端口是否正在使用?如何驗證 Linux 服務器上正在偵聽哪些端口?如何使用 CLI 檢查 Linux 操作系統上的端口是否正在使用?
驗證哪些端口正在服務器網絡接口上偵聽非常重要。您需要注意開放端口以檢測入侵。除了入侵之外,出于故障排除的目的,可能有必要檢查端口是否已被服務器上的其他應用程序使用。
例如,您可以在同一系統上安裝 Apache 和 Nginx 服務器。因此有必要知道 Apache 或 Nginx 是否正在使用 TCP 端口#80/443。本快速教程提供了使用 netstat、nmap 和 lsof 命令檢查正在使用的端口并查看正在使用該端口的應用程序的步驟。
如何檢查端口是否被使用
查看Linux上的監聽端口和應用程序:
1.打開終端應用程序,即 shell 提示符。
2.在 Linux 上運行以下任一命令來查看開放端口:
3.對于最新版本的 Linux,請使用 ss 命令。例如,ss -tulw
讓我們詳細看看命令及其輸出。
選項#1:lsof 命令
語法為: 示例輸出:
考慮上面輸出的最后一行:
sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22(監聽)
- sshd是應用程序的名稱。
- 10.86.128.138是 sshd 應用程序綁定到的 IP 地址(監聽)
- 22是正在使用的 TCP 端口 (LISTEN)
- 85379是sshd進程的進程ID
查看 Internet 網絡服務列表
/ etc/services是互聯網服務的友好文本名稱與其底層分配的端口號和協議類型之間的文本文件映射。使用cat命令或者more命令/ less命令查看:$less /etc/services
選項#2:netstat 或 ss 命令
您可以使用netstat檢查監聽端口和應用程序,如下所示。
Linux netstat 語法
運行 netstat 命令和grep 命令來過濾掉處于 LISTEN 狀態的端口: 或過濾掉特定的 TCP 端口,例如 443: 其中 netstat 命令選項為:
- -t :選擇所有TCP端口
- -u :選擇所有UDP端口
- -l :顯示監聽服務器套接字(在列表狀態下打開TCP和UDP端口)
- -p :顯示套接字的 PID/程序名稱。換句話說,該選項告訴誰打開了 TCP 或 UDP 端口。例如,在我的系統上,Nginx 打開了 TCP 端口 80/443,因此我將 /usr/sbin/nginx 或其 PID。
- -n :不解析名稱(避免 dns 查找,這可以加快繁忙的 Linux/Unix 服務器上的 netstat 速度)
Linux 上的netstat 命令已棄用一段時間。因此,需要使用ss命令,如下:
其中,ss命令選項如下:
- -t :在 Linux 上僅顯示 TCP 套接字
- -u :在Linux上僅顯示UDP套接字
- -l :顯示監聽套接字。例如,SSHD 服務器打開 TCP 端口 22。
- -p :列出打開套接字的進程名稱
- -n :不解析服務名稱,即不使用 DNS
FreeBSD/macOS (OS X) netstat 語法
語法如下: 您也可以在 macOS 或 FreeBSD 上使用 sockstat 命令來顯示打開的 TCP 或 UDP 端口。例如:我的FreeBSD 服務器版本13.xx 的輸出:
OpenBSD netstat 語法
選項#3:nmap 命令
語法是:
-
Linux系統
+關注
關注
4文章
591瀏覽量
27355 -
PID控制
+關注
關注
10文章
460瀏覽量
40040 -
Shell
+關注
關注
1文章
363瀏覽量
23296 -
TCP通信
+關注
關注
0文章
146瀏覽量
4217
發布評論請先 登錄
相關推薦
評論