前提準備:
- 雲伺服器一台:我的伺服器是阿裡雲伺服器。你有其它的雲伺服器也可以操作。
- 雲伺服器需要安裝寶塔面闆:參考教程:雲伺服器安裝寶塔面闆(超詳細)新手必讀
- FileZilla用戶端(連接配接FTP空間工具):建站工具—>FTP工具—>FileZilla下載下傳
正常情況下,我們都能順利連接配接到寶塔面闆建立的FTP空間,但是我這次就遇到了幾個問題,是以這次記錄下來,以後再次遇到同樣的問題,就不要耗費時間去查資料了。日積月累,我的建站知識越來越豐富。
寶塔面闆FTP啟動失敗問題
我的寶塔面闆FTP插件啟動辨別一直是紅色辨別(停止狀态),解除安裝插件重裝也是一樣的。是以去網上查找解決方法。
我檢視了寶塔面闆安裝日志:日志太長,可以檢視 寶塔面闆安裝ftp插件報錯提示
日志關鍵報錯資訊:
pureftpd.sh: line 75: StartUp: command not found
解決方法:
在FinalShell用戶端執行以下指令
[root@iZuf6bm7y86rsciyk4lvriZ ~]# pkill -9 pure-ftpd
[root@iZuf6bm7y86rsciyk4lvriZ ~]# service pure-ftpd start
Starting Pure-FTPd... /etc/init.d/pure-ftpd: /www/server/pure-ftpd/sbin/pure-config.pl: /usr/bin/perl: bad interpreter: No such file or directory
failed
[root@iZuf6bm7y86rsciyk4lvriZ ~]# yum install -y perl perl-devel
已加載插件:fastestmirror, product-id, search-disabled-repos, subscription-manager
# 執行 yum install -y perl perl-devel 之後等待一會
# perl安裝成功之後...
[root@iZuf6bm7y86rsciyk4lvriZ ~]# service pure-ftpd start
Starting Pure-FTPd... Running: /www/server/pure-ftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C10 -D -E -fftp -H -I15 -lpuredb:/www/server/pure-ftpd/etc/pureftpd.pdb -lunix -L20000:8 -m4 -p39000:40000 -s -U133:022 -u100 -g/var/run/pure-ftpd.pid -k99 -Z -Y1
done
[root@iZuf6bm7y86rsciyk4lvriZ ~]# netstat -tap | grep ftp
tcp 0 0 0.0.0.0:ftp 0.0.0.0:* LISTEN 552/pure-ftpd (SERV
tcp6 0 0 [::]:ftp [::]:* LISTEN 552/pure-ftpd (SERV
其中在ssh終端可以看出錯誤提示:
/usr/bin/perl: bad interpreter: No such file or directory failed
然後查找資料:發現隻需要安裝perl
yum install -y perl perl-devel
安裝完成之後,就去啟動ftp服務。
service pure-ftpd start
用netstat檢視ftp網絡連接配接狀況。
netstat -tap | grep ftp
這樣的再去寶塔面闆背景檢視ftp服務是否能啟動,結果發現能啟動起來。這樣就解決了這個問題。【寶塔面闆FTp空間服務啟動成功】
但是雖然ftp服務啟動起來了,但是FileZilla客戶無法連接配接ftp服務。沒事下文一一來解答我遇到的問題。請認真仔細看下去。
本問題參考資料:
- 寶塔linux面闆ftp啟動不了怎麼辦
- 報錯/usr/bin/perl: bad interpreter: No such file or directory解決方法
- 解決一次寶塔7.4.2下Pure-Ftpd無法啟動
錯誤提示:無法連接配接到伺服器
錯誤: 20 秒後無活動,連接配接逾時
錯誤: 無法連接配接到伺服器
遇到這個問題的時候,折騰了我很久。後面解決之後,發現問題很簡單,隻是有些東西誤導了我的判斷。
我首先懷疑的是寶塔面闆的問題。然後去網上搜尋答案。
找到了寶塔面闆的官方論壇的一個回答:FTP連接配接不上的解決方法
這個回答告訴我以下解決方案:
1.注意内網IP和外網IP
2.檢查ftp服務是否啟動 (面闆首頁即可看到)
3.檢查防火牆20端口 ftp 21端口及被動端口39000 - 40000是否放行 (如是騰訊雲/阿裡雲等還需檢查安全組)
4.是否主動/被動模式都不能連接配接
5.建立一個使用者看是否能連接配接
6.修改ftp配置檔案 将ForcePassiveIP前面的#去掉 将192.168.0.1替換成你伺服器的外網IP
9.關閉ftp用戶端的TLS嘗試連結
其中第7,8點沒有去嘗試,就沒有放入本文。
現在我們來談談我試過的方法。
首先我用的ftp用戶端是:FileZilla用戶端。
第一點:我填入FileZilla客戶的站點資訊為外網ip位址。是以這點沒有解決我的問題。
第二點:去寶塔面闆觀察ftp服務是否開啟,很明顯,我開啟了ftp服務。結果還是沒有解決我的問題。
第三點:檢查防火牆20端口 ftp 21端口及被動端口39000 - 40000是否放行 (如是騰訊雲/阿裡雲等還需檢查安全組)
看見沒,三個關鍵端口,我都開放了哦。然後我就繼續去試其它幾點方案。但是有些事情沒有想到啊,最坑的地方在這裡。下文會講這個。
第4,5,6,9點方法我都試過了,還是不能解決我的問題。還是報錯:錯誤: 無法連接配接到伺服器。
此時此刻,我還沒有放棄去尋找方法。因為我不止有這一台阿裡雲伺服器,我有十幾台阿裡雲雲伺服器(都是在阿裡雲官網購買的,一次性買了三年),我現在就在想啊,我這台ftp空間連不上的雲伺服器,可能是前幾天我伺服器因為中了木馬病毒導緻出現了問題,因為木馬病毒修改了Linux部分系統指令的權限以及chattr特殊屬性。是以腦海裡懷疑是這個原因。我就去測試我其它幾台阿裡雲伺服器,結果無一例外,它們建立的ftp空間全部可以連接配接成功,并可以通路。
我現在有點小郁悶,因為我自認為我這台出問題的伺服器的ftp配置和其它幾台雲伺服器是一模一樣的,為什麼這台雲伺服器不能成功連接配接?
好了,我現在還沒有放棄,我現在去嘗試看下這幾台雲伺服器的防火牆情況。
先看看正常能成功連接配接ftp空間的這台雲伺服器(11号)的防火牆情況:
firewall-cmd --list-ports
阿裡雲伺服器(10)不能連接配接ftp空間的這台伺服器的防火牆情況
怎麼回事?怎麼回事?怎麼回事?我都吃驚了好幾遍,為啥寶塔面闆放行了端口,而防火牆沒有放行端口呢?難道是說寶塔面闆的放行端口是"花拳繡腿"沒啥用的。先不想這麼多了。
趕緊在FinalShell用戶端指令行裡面寫指令去放行防火牆的端口。
有時候你不清楚寶塔面闆的端口是否放行了,你可以用網絡端口掃描工具來檢測,這個更能直覺的清楚哪個端口究竟有沒有開放。
端口掃描工具:http://coolaf.com/tool/port
需要放行的FTP端口:21 20 39000-40000
# 防火牆放行FTP需要用到的端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=39000-40000/tcp --permanent
# 重新載入防火牆規則---重新加載後才能生效
firewall-cmd --reload
# 檢視防火牆放行端口清單
firewall-cmd --list-ports
上面三處端口防火牆開放了之後,就可以用端口掃描工具掃描下。我的已經掃描過了,端口全部放行了。然後我立馬去嘗試連接配接這台雲伺服器的ftp空間。結果成功了!!!
下面的讀取目錄清單失敗是由于20端口沒有放開導緻的,是以這一步,我們一次性把20,21,39000-40000端口都放開。要不然會連接配接出錯的。
FTP空間連接配接成功示意圖:
錯誤提示:讀取目錄清單失敗
狀态: 明文 FTP 不安全。請切換到 FTP over TLS。
狀态: 已登入
狀态: 讀取目錄清單…
狀态: 伺服器發回了不可路由的位址。使用伺服器位址代替。
指令: MLSD
錯誤: 20 秒後無活動,連接配接逾時
錯誤: 讀取目錄清單失敗
這個問題是防火牆沒有放開20端口導緻的。你去指令行放行下20端口就好了。
題外話:
防火牆指令如果沒有找到,可以根據你的Linux系統版本來選擇指令安裝。
我的是CentOS系統,是以選擇指令:
yum install firewalld
指令查詢網站:https://command-not-found.com/firewall-cmd
Debian
apt-get install firewalld
Ubuntu
apt-get install firewalld
Arch Linux
pacman -S firewalld
Kali Linux
apt-get install firewalld
CentOS
yum install firewalld
Fedora
dnf install firewalld
Raspbian
apt-get install firewalld
參考資料
- FTP連接配接不上的解決方法
- Linux伺服器防火牆-開放端口
- firewall-cmd 指令沒有找到
- centos7 firewall指定IP與端口通路(常用)
- FileZilla連接配接ftp伺服器失敗,提示"AUTH TLS"解決方法
- Centos7 firewall-cmd not found
原文更精彩:https://www.yundashi168.com/276.html