Ftp

在 PASV 命令後 wget ftp 連接失敗

  • July 28, 2020

在嘗試將所有文件從一個 Web 伺服器(“源”)傳輸到另一個(“目標”)時,wget 命令正在通過 FTP 連接,但無法繼續執行 PASV 命令。

我正在使用與“目標”伺服器(共享主機上的 Linux 機器)的 SSH 連接來執行 wget 命令。

“源”伺服器是微軟伺服器,我桌面的FTP客戶端沒有問題。

這是我用來啟動傳輸的命令:

wget -m ftp://username:'password'@sourceserver.com

登錄成功,然後發出這些命令:

==> SYST ... done.      ==> PWD ... done.
==> TYPE I ... done.    ==> CWD not needed.
==> ... couldn't connect to xxx.xxx.xxx.xxx port 1128: Connection timed out
Retrying.

由於“無法連接”錯誤,每次重試時,它都會嘗試不同的埠號(不是 21,它已經成功連接到該埠號)。我第一次記錄錯誤時,它嘗試了 487X 範圍內的埠。

我不知道問題是在 Microsoft(“源”)伺服器端還是在 Linux(“客戶端”)端。

想法?

對於文件傳輸或目錄列表,FTP 在動態埠上打開額外的 TCP 連接。在主動模式下,客戶端創建一個本地偵聽器並使用 PORT 命令讓伺服器知道其 IP:Port,然後伺服器連接到客戶端埠(通常從伺服器端的埠 20)。在被動模式下,伺服器打開埠並讓客戶端知道它在哪裡監聽以響應客戶端的 PASV 命令。

兩種模式都需要

  • 另一端可訪問的 IP,例如,在簡單 NAT 路由器後面的客戶端的活動模式將不起作用
  • none 或廣泛開放的防火牆,因為偵聽器端的埠對於每個連接都是不同的。

如果您從桌面客戶端訪問它沒有任何問題,可能是您的桌面客戶端使用主動模式,而 wget 使用被動模式,或者您的桌面和伺服器之間沒有防火牆/NAT 路由器,但是在您的共享主機和伺服器之間有一個。

如果不了解有關您的設置的更多詳細資訊,就很難推測出更多資訊。

引用自:https://serverfault.com/questions/584237