前提:檢查服務器(linux系統)端口打開,有兩個必要條件:一、服務器上的服務進程開始監聽端口;二、服務器上的服務對應的端口在防火牆上已經放開(關閉防火牆也可以)。
准備工作:安裝telnet客戶端(測試連接的電腦是Windows系統,默認是未安裝的)
控制面板-程序-程序和功能-啟用或者關閉Windows功能-勾選Telnet客戶端-確定
一、以SSH使用的22端口為例,檢查服務器的22端口是否放開
1、檢查服務器上SSH服務,同時查看端口監聽狀態
(1)service sshd status 檢查SSH服務當前狀態
(2)lsof -i:22 查看22端口監聽狀態
可以看到SSH服務和監聽已經正常
2、在測試電腦通過telnet ip port進行測試
連接
下圖為可以連接(說明:端口打開)
3、關閉SSH服務,測試端口是否打開(驗證第一個條件不滿足時)
(1)service sshd stop 停止SSH服務
(2)service sshd status 檢查SSH服務當前狀態
(3)lsof -i:22 查看22端口監聽狀態
可以看到SSH服務和監聽已經停止
下圖為不可以連接(說明:端口未打開)
二、以FTP使用的21端口為例,檢查服務器的21端口是否打開
1、檢查服務器上FTP服務,同時查看端口監聽狀態
(1)service vsftpd status 檢查FTP服務當前狀態
(2)lsof -i:21 查看21端口監聽狀態
可以看到FTP服務和監聽已經正常
2、在測試電腦通過telnet ip port進行測試
下圖為不可以連接(說明:端口未打開)
3、檢查防火牆設置(驗證第二個條件不滿足時)
可以看到防火牆只打開了22端口,沒有放開FTP對應的21端口
iptables -nL 查看防火牆filter表
4、關閉防火牆
service iptables stop 關閉防火牆服務
5、在測試電腦通過telnet ip port進行測試
連接
下圖為可以連接(說明:端口打開)
6、退出時一般輸入CTRL+]鍵,再輸入quit或者exit就退出了,但是如果發現無法退出,可以把命令窗口關閉
總結:檢查服務器端口是否打開,我們用到的核心命令只有一個telnet(服務器外部視角),本文通過兩個例子,對必要條件進行了說明,另外在實際環境中,一般只知道服務器IP和端口,並不知道服務是否運行、進程是否在監聽,也不知道防火牆的設置,這時如果發現端口無法連接,相信大家已經知道登陸服務器去具體看什么了(是否監聽&是否防火牆放開)。
額外補充:如果上述檢查必要條件看起來都沒有問題,但是端口還是無法連接,這時就需要考慮排查傳輸了,另外如果基本的ping檢查也是正常的(傳輸沒問題),建議看下網絡里面的防火牆。