天天看點

手把手教你如何連接配接到寶塔面闆建立的FTP空間

前提準備:

  • 雲伺服器一台:我的伺服器是阿裡雲伺服器。你有其它的雲伺服器也可以操作。
  • 雲伺服器需要安裝寶塔面闆:參考教程:雲伺服器安裝寶塔面闆(超詳細)新手必讀
  • FileZilla用戶端(連接配接FTP空間工具):建站工具—>FTP工具—>FileZilla下載下傳
正常情況下,我們都能順利連接配接到寶塔面闆建立的FTP空間,但是我這次就遇到了幾個問題,是以這次記錄下來,以後再次遇到同樣的問題,就不要耗費時間去查資料了。日積月累,我的建站知識越來越豐富。

寶塔面闆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空間服務啟動成功】

手把手教你如何連接配接到寶塔面闆建立的FTP空間

但是雖然ftp服務啟動起來了,但是FileZilla客戶無法連接配接ftp服務。沒事下文一一來解答我遇到的問題。請認真仔細看下去。

本問題參考資料:

  • 寶塔linux面闆ftp啟動不了怎麼辦
  • 報錯/usr/bin/perl: bad interpreter: No such file or directory解決方法
  • 解決一次寶塔7.4.2下Pure-Ftpd無法啟動

錯誤提示:無法連接配接到伺服器

錯誤: 20 秒後無活動,連接配接逾時

錯誤: 無法連接配接到伺服器

手把手教你如何連接配接到寶塔面闆建立的FTP空間

遇到這個問題的時候,折騰了我很久。後面解決之後,發現問題很簡單,隻是有些東西誤導了我的判斷。

我首先懷疑的是寶塔面闆的問題。然後去網上搜尋答案。

找到了寶塔面闆的官方論壇的一個回答:FTP連接配接不上的解決方法

這個回答告訴我以下解決方案:

1.注意内網IP和外網IP

2.檢查ftp服務是否啟動 (面闆首頁即可看到)

3.檢查防火牆20端口 ftp 21端口及被動端口39000 - 40000是否放行 (如是騰訊雲/阿裡雲等還需檢查安全組)

4.是否主動/被動模式都不能連接配接

5.建立一個使用者看是否能連接配接

6.修改ftp配置檔案 将ForcePassiveIP前面的#去掉 将192.168.0.1替換成你伺服器的外網IP

手把手教你如何連接配接到寶塔面闆建立的FTP空間

9.關閉ftp用戶端的TLS嘗試連結

手把手教你如何連接配接到寶塔面闆建立的FTP空間

其中第7,8點沒有去嘗試,就沒有放入本文。

現在我們來談談我試過的方法。

首先我用的ftp用戶端是:FileZilla用戶端。

第一點:我填入FileZilla客戶的站點資訊為外網ip位址。是以這點沒有解決我的問題。

第二點:去寶塔面闆觀察ftp服務是否開啟,很明顯,我開啟了ftp服務。結果還是沒有解決我的問題。

手把手教你如何連接配接到寶塔面闆建立的FTP空間

第三點:檢查防火牆20端口 ftp 21端口及被動端口39000 - 40000是否放行 (如是騰訊雲/阿裡雲等還需檢查安全組)

手把手教你如何連接配接到寶塔面闆建立的FTP空間

看見沒,三個關鍵端口,我都開放了哦。然後我就繼續去試其它幾點方案。但是有些事情沒有想到啊,最坑的地方在這裡。下文會講這個。

第4,5,6,9點方法我都試過了,還是不能解決我的問題。還是報錯:錯誤: 無法連接配接到伺服器。

此時此刻,我還沒有放棄去尋找方法。因為我不止有這一台阿裡雲伺服器,我有十幾台阿裡雲雲伺服器(都是在阿裡雲官網購買的,一次性買了三年),我現在就在想啊,我這台ftp空間連不上的雲伺服器,可能是前幾天我伺服器因為中了木馬病毒導緻出現了問題,因為木馬病毒修改了Linux部分系統指令的權限以及chattr特殊屬性。是以腦海裡懷疑是這個原因。我就去測試我其它幾台阿裡雲伺服器,結果無一例外,它們建立的ftp空間全部可以連接配接成功,并可以通路。

我現在有點小郁悶,因為我自認為我這台出問題的伺服器的ftp配置和其它幾台雲伺服器是一模一樣的,為什麼這台雲伺服器不能成功連接配接?

好了,我現在還沒有放棄,我現在去嘗試看下這幾台雲伺服器的防火牆情況。

先看看正常能成功連接配接ftp空間的這台雲伺服器(11号)的防火牆情況:

firewall-cmd --list-ports

手把手教你如何連接配接到寶塔面闆建立的FTP空間

阿裡雲伺服器(10)不能連接配接ftp空間的這台伺服器的防火牆情況

手把手教你如何連接配接到寶塔面闆建立的FTP空間

怎麼回事?怎麼回事?怎麼回事?我都吃驚了好幾遍,為啥寶塔面闆放行了端口,而防火牆沒有放行端口呢?難道是說寶塔面闆的放行端口是"花拳繡腿"沒啥用的。先不想這麼多了。

趕緊在FinalShell用戶端指令行裡面寫指令去放行防火牆的端口。

有時候你不清楚寶塔面闆的端口是否放行了,你可以用網絡端口掃描工具來檢測,這個更能直覺的清楚哪個端口究竟有沒有開放。

端口掃描工具:http://coolaf.com/tool/port

手把手教你如何連接配接到寶塔面闆建立的FTP空間
需要放行的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 不安全。請切換到 FTP over TLS。

狀态: 已登入

狀态: 讀取目錄清單…

狀态: 伺服器發回了不可路由的位址。使用伺服器位址代替。

指令: MLSD

錯誤: 20 秒後無活動,連接配接逾時

錯誤: 讀取目錄清單失敗

手把手教你如何連接配接到寶塔面闆建立的FTP空間

這個問題是防火牆沒有放開20端口導緻的。你去指令行放行下20端口就好了。

題外話:

手把手教你如何連接配接到寶塔面闆建立的FTP空間

防火牆指令如果沒有找到,可以根據你的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

繼續閱讀