在 Google Compute Instance 上使用 FTP 客户端(而非服务器)

在 Google Compute Instance 上使用 FTP 客户端(而非服务器)

运行 Google Compute 实例。由于遗留原因,我需要使用 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 是不切实际的,而且传输的数据无论如何都不是敏感的。

提前感谢你的帮助!

答案1

对于非被动模式,您必须“重写”发送到服务器的 PORT 命令 IP 数据包(它包含内部 IP 地址,而不是公共 IP 地址)。请参阅我为 Google Cloud 提供的临时解决方案这里

答案2

其根本原因可能与这里,如果您以被动模式连接,则应打开一系列更高的端口。

相关内容