Ftp
在 PASV 命令後 wget ftp 連接失敗
在嘗試將所有文件從一個 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 路由器,但是在您的共享主機和伺服器之間有一個。
如果不了解有關您的設置的更多詳細資訊,就很難推測出更多資訊。