我有一个Windows 2008 R2的亚马逊EC2,它需要通过FTP从外部服务器下载文件。 文件名是每天不同的,所以我不得不ls,然后得到最新的文件。 ls失败:
[REDACTED]:\[REDACTED]>ftp [REDACTED] Connected to [REDACTED]. 220 ProFTPD 1.3.3c Server ready. User ([REDACTED]:(none)): [REDACTED] 331 Password required for [REDACTED] Password: 230 User [REDACTED] logged in ftp>ls Connection closed by remote host. ftp>
所以它需要一段时间才能说“远程主机closures连接”。 这是我在任何非Amazon EC2 Windows 2008 R2服务器上尝试时发生的情况:
[REDACTED]:\[REDACTED]>ftp [REDACTED] Connected to [REDACTED]. 220 ProFTPD 1.3.3c Server ready. User ([REDACTED]:(none)): [REDACTED] 331 Password required for [REDACTED] Password: 230 User [REDACTED] logged in ftp>ls 200 PORT command successful 150 Opening ASCII mode data connection for file list photos tmp key logs customer reversefeed reviews thesaurus incoming ad 226 Transfer complete ftp: 144 bytes received in 0.01Seconds 18.00Kbytes/sec. ftp>
所以只是为了清楚我没有运行FTP服务器,我试图连接到一个和下载一个文件。 但是无法打开数据传输通道。 在Amazon EC2configuration中,需要更改哪些内容才能起作用?
提前致谢。
通常(根据我的经验),由连接一端的防火墙或filter/代理引起的问题不能正确处理PASV
(被动) FTP
连接。 首先我要尝试的是使用一个活动的FTP连接,然后尝试从等式中删除防火墙,这将给出一个相当准确的指示问题出在哪里。
而且,就一般的兴趣点而言, SFTP
(基于SSH
FTP
)不会受到这种主动/被动问题(这是一个单一的“主动”连接),除了作为传输文件的安全encryption方法外。 如果可能的话,你应该切换到它。 它可能会消除你的问题,并在你的文件传输的同时包围一层安全。
FTP和FTPS都使用连接协议中的两个或多个端口。 您需要打开至less2个端口才能使其工作。 对于FTP,通常是21和20.对于FTPS,通常我认为是989和990。 所以,我认为大多数人更喜欢使用SFTP,通常在端口22上使用SSL通道中的单个端口,这与SSH shell使用的端口相同。
您可以使用此批处理脚本来validation端口:
@echo off cls ECHO TCP ports that are listening... ECHO. ECHO Prot Local Address Foreign Address State PID ECHO. netstat -an -o | find "LISTENING" ECHO. pause