0

我正在尝试在 Windows AWS EC2 实例上执行 FTP 脚本以下载文件,但由于防火墙设置,入站连接被阻止。任何人都可以建议什么应该是允许入站连接的适当防火墙配置。

我害怕玩弄这些设置,因为我曾经单击重置防火墙设置并且我失去了该实例的远程登录访问权限,我不得不终止它并创建一个新的。

谢谢你。

@echo off
echo user  username > ftpcmd.dat
echo password >> ftpcmd.dat
echo binary >>ftpcmd.dat
echo cd /Outbound/Archive >>ftpcmd.dat
echo prompt n >>ftpcmd.dat
echo get DATA_FEED.xml C:\Users\user\Desktop\Test.xml >> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.server.com
del ftpcmd.dat

下面是 Ec2 防火墙设置的屏幕截图

4

2 回答 2

1

AWS 文档有 -

文件传输协议 (FTP) 有一个 PORT 命令,客户端通过该命令将其地址发送回服务器。然后服务器连接到该地址的客户端以发送文件数据。如果客户端查找自己的内部地址并将其发送到服务器,则连接将失败。在这种特定情况下,该问题有两种解决方案。首先,配置客户端发送其公共 IP 地址。其次,客户端可以使用“被动 FTP”,它只连接到服务器,而不是从服务器到客户端。通常,在发送到外部服务器的数据中编码本地地址和端口号的应用程序可能会遇到 NAT 问题。必须始终注意发送公共地址,而不是内部地址。我们建议使用被动模式,除非 FTP 服务器不支持。

我没有尝试公开我的 AWS 实例的公共 IP,我们知道 FTP.EXE 不支持被动模式,所以我使用了 NcFTP 并且能够下载文件。

于 2013-01-09T08:44:46.857 回答
1

简单的解决方案:

尝试添加

echo quote pasv >> ftpcmd.dat

就在发送之前binary

解释:

PASV将连接设置为被动模式,不需要来自服务器的任何传入连接。这就像一个简单的客户端-服务器连接。

在主动模式下,客户端连接到服务器(在您的情况下,登录成功),然后告诉服务器它自己的 IP 地址和一个随机端口,通常高于 1023。然后服务器连接到您的客户端以传输数据。这失败了,因为您位于防火墙后面。

于 2013-01-07T17:26:58.930 回答