Firewall
FTP 主動/被動不能像我期望的那樣工作
所以我現在有一個有趣的問題。我正在嘗試使用 curl(CentOS 上的 7.15.5)從遠端 FTP 伺服器檢索文件。我們的客戶上週末改變了一些東西,因為它在星期五有效,而現在無效。
我可以使用 CLI 客戶端進行 FTP 訪問,並獲得一個目錄列表就好了,儘管我必鬚髮出“被動”來關閉被動模式。如果我不這樣做,我會得到
421 Service not available, remote server has closed connection Passive mode refused. Turning off passive mode. No control connection for command: Transport endpoint is not connected ftp>
好的。顯然,被動模式需要被禁用。我已經閱讀了幾次手冊頁,我知道我需要使用 -P 來指定“活動”模式,但是從文件來看,這似乎會在客戶端(我的)機器上打開一個埠來接收數據流向。因為它在防火牆後面,所以這行不通。
這告訴我我誤解了一些東西,因為 CLI 客戶端在活動模式下工作。
幫助我 serverfault-kenobi,你是我唯一的希望。
我得到了它!
關鍵是使用
-P
,但你必須使用“明顯”的選擇,因為你不能打開另一個埠並讓它連接。引用文件:
- 使 curl 選擇已用於控制連接的相同 IP 地址
所以 curl 命令
curl -u username:password -P - -o output.file ftp://whatever/source.file
這
-P -
是重要的部分。本質上,它使 curl 使用唯一可用的連接(命令連接)來傳輸數據。歡呼!
這個連結很好地解釋了主動與被動。