我有一个 Windows 2008 R2 Amazon EC2 服务器,它无法通过 ftp 客户端,我该怎么做才能解决这个问题?

我有一个 Windows 2008 R2 Amazon EC2 服务器,它无法通过 ftp 客户端,我该怎么做才能解决这个问题?

我有一台 Windows 2008 R2 Amazon 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>

因此,它需要一段时间才能显示“远程主机关闭连接”。当我在任何非 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 服务器,而是尝试连接到 FTP 服务器并下载文件。但无法打开数据传输通道。我需要在 Amazon EC2 配置中更改哪些内容才能实现此功能?

提前致谢。

答案1

这通常是(根据我的经验)连接一端的防火墙或过滤器/代理未正确处理PASV(被动)FTP连接而导致的问题。我首先会尝试使用主动 FTP 连接,然后尝试从方程式中移除防火墙,这将为您提供相当准确的问题所在指示。

而且,作为一般兴趣点,SFTPFTP超过SSH)不会受到这种主动/被动问题的困扰(它是一个单一的“主动”连接),此外它还是一种安全、加密的文件传输方法。如果可能的话,您应该改用它。它可能会消除您的问题,同时为您的文件传输提供一层安全性。

答案2

FTP 和 FTPS 在其连接协议中都使用 2 个或更多端口。您需要打开至少 2 个端口才能使它们工作。对于 FTP,通常是 21 和 20。对于 FTPS,我认为通常是 989 和 990。因此,我认为大多数人更喜欢使用 SFTP,它使用在 SSL 通道中隧道化的单个端口,通常在端口 22 上,这是 SSH shell 使用的相同端口。

您可以使用此批处理脚本验证端口:

@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

相关内容