Ftp
在 Google Compute Instance 上使用 FTP 客戶端(不是伺服器)
執行 Google 計算實例。由於遺留原因,我需要使用 FTP 作為客戶端(而不是伺服器)來訪問其他人的 FTP 伺服器。
我試過“被動”模式,沒有結果:
instance-1:~$ ftp -p 123.123.123.123 <--- note –p option for passive mode Connected to 123.123.123.123. 220 (vsFTPd 3.0.3) Name (123.123.123.123:user): username FTP server 331 Please specify the password. Password: 230 Login successful. <--- note successful login Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (123,123,123,123,21). (system hangs at this point, for about 1-2 minutes) ftp: connect: Connection timed out ftp>
(IP地址和使用者名已編輯)
嘗試
get filename.ext
已知文件也會失敗。如果我嘗試使用非被動模式,我會立即收到以下錯誤:
230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 500 Illegal PORT command. ftp: bind: Address already in use
有什麼想法嗎?我已經嘗試為入口打開埠 20 和 21,並且我假設出口埠可用。
請無需評論安全方面或 SFTP 等替代方案。這是數百台伺服器的自動數據收集過程,因此要求舊客戶切換到 SFTP 或更安全的 API 是不切實際的,而且傳輸的數據無論如何也不敏感。
提前感謝您的幫助!
對於非被動模式,您必須“重寫”發送到伺服器的 PORT 命令 IP 數據包(它包含內部 IP 地址而不是公共 IP 地址)。在此處查看我的Google云臨時解決方案。
可能存在與此處相同的根本原因,如果您以被動模式連接,則應打開一系列更高的埠。