除一個位置外,FTP 上傳失敗

除一個位置外,FTP 上傳失敗

我正在嘗試將網站從一台伺服器遷移到另一台伺服器,但新伺服器上出現 FTP 問題。該網站透過內部軟體透過 FTP 推送內容,我知道強烈建議不要使用 FTP,但目前我在這件事上別無選擇。我已經設定了FTP 顯然足夠好,並且可以使用FileZilla、Cyber​​Duck 和ftp 終端客戶端成功傳輸文件,但是使用我們的軟體,它每次都會登入、創建0 位元組的文件並超時(ETIMEDOUT) ,除非使用網路時我的辦公室。我已經通過 4G 適配器、VPN、在家等方式運行了此程序,但它會失敗。

我們軟體中使用的ftp客戶端是jsftp,它僅在被動模式下工作,因此不可能切換到主動模式。軟體在 macOS 上運作。

以前的伺服器在任何位置都可以正常工作,它是使用 pure-ftpd 的 MediaTemple 共享 Debian 機器。我要遷移到的新伺服器運行 Ubuntu 16.04 並由 Google Cloud Platform 託管。我使用過 vsftpd 和 pure-ftpd。我嘗試使用在我的個人帳戶上設定的另一台 Google Cloud 伺服器,但出現了相同的問題。

我不知道問題出在哪裡,該軟體在舊伺服器上運行得很好,在辦公室使用時在谷歌伺服器上也運行得很好。 Google 伺服器也可以被眾多其他客戶端存取並運作,無論是否在辦公室。我在網上找不到任何關於這種具體情況的信息,所以歡迎任何想法。

答案1

您提到該檔案為 0 位元組並且逾時。您是否檢查過軟體寫入目錄的檔案權限?

答案2

我已經在伺服器端解決了這個問題。我注意到,在無法透過軟體上傳的連接上,如果我使用 FileZilla,它會返回“伺服器發送了帶有不可路由位址的被動回應。改為使用伺服器位址。”但我不會透過軟體工作的連結來得到這個。

因此,我已將伺服器的 IP 位址設定為被動模式(pure-ftpd 中的 ForcePassiveIP),現在它按預期工作。

答案3

當您在 GCP 上啟動虛擬機器時,您應該更新防火牆規則:

  • 輸入:TCP 20,21,60000-65535
  • 輸出:TCP 20,21,60000-65535

然後更新 FTP 以使用被動連接埠範圍 60000-65535。然後在客戶端使用被動模式。詳細資訊和說明 -http://sysadm.pp.ua/linux/proftpd-ubuntu-16-04.html

相關內容