我的客户给了我一些 FTP 凭证。在家里,我可以使用 FileZilla 连接,没有任何问题。但是从我的 EC2 实例无法连接。我尝试在 Windows 防火墙中授予 FileZilla 权限,禁用防火墙,但仍然没有结果。我还尝试创建一个全新安装,但没有任何结果。
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 421 Could not create socket.
Command: PORT 172,31,30,233,195,203
Response: 200 Port command successful
Command: MLSD
Response: 150 Opening data channel for directory listing of "/"
Response: 425 Can't open data connection for transfer of "/"
Error: Failed to retrieve directory listing
Status: Connection closed by server
我还在亚马逊控制台上检查了我的安全组,传出的包裹没有限制。传入的包裹开放了端口 20 和 21
答案1
您可以连接并登录默认 FTP 端口(TCP 21),但无法建立第二个 TCP 连接,即数据连接,这是被动 FTP 数据传输所必需的(目录列表是一种数据传输)。
PORT 响应通常包含 6 个八位字节,用于编码需要建立被动数据连接的服务器地址。
例如 PORT h1,h2,h3,h4,p1,p2
,其中 h1.h2.h3.h4 是服务器的 IPv4 IP 地址 (172.31.30.233),TCP 端口号即(p1*256) + p2
代表xxx,x,xxx,xxx,195,203
端口(195 * 256) + 203 = 50123
您的连接可能会失败,因为PORT
服务器通告的号码不是以公共可路由 IPv4 地址开头,而是以私有使用地址(172.31.30.233 属于 172.16.0.0/12 范围)开头,或者到用于被动流量 TCP 50123 的端口号的出站流量在这种情况下被阻止。
答案2
默认情况下,出站连接不被阻止,通常为 0.0.0.0/0 您可以从 EC2 实例浏览 ftp 站点吗?ftp://site.com
他们可能允许某个 IP 在他们那边(您的家)进行连接,但不允许 AWS 中的您的 VPC 进行连接。