Ftp

在 Google Compute Instance 上使用 FTP 客戶端(不是伺服器)

  • May 29, 2020

執行 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云臨時解決方案。

可能存在與此處相同的根本原因,如果您以被動模式連接,則應打開一系列更高的埠。

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