运行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已知文件的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等替代scheme。 这是一个数百个服务器的自动化数据收集过程,因此要求传统客户切换到SFTP或更安全的API是不现实的,传输的数据也不是很敏感。
提前感谢任何帮助!
对于非被动模式,您必须“重写”发送到服务器的PORT命令IP数据包(它包含内部IP地址,而不是公用的IP地址)。 在这里看到我的临时解决scheme谷歌云。
可能与此处有相同的根本原因,如果以被动模式连接,则应打开一系列较高端口。