![FTP - 500 我无法打开与 xx.xx.xx.xx 的连接](https://linux22.com/image/804161/FTP%20-%20500%20%E6%88%91%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%E4%B8%8E%20xx.xx.xx.xx%20%E7%9A%84%E8%BF%9E%E6%8E%A5.png)
我在 AWS 上运行服务器,并连接到合作伙伴的 FTP 站点(不太清楚他们在运行什么)。我的服务器有一个弹性 IP。在下面的结果中,xx.xx.xx.xx 是内部 IP(与我从 IPConfig 获得的值相同)。yy.yy.yy.yy 是外部 IP(与我通过 RDP 连接到的 IP 相同)。
Connected to ftp.site.com.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 22:47. Server port: 21.
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
User (ftp.site.com:(none)): someuser
331 User someuser OK. Password required
Password:
230 OK. Current restricted directory is /
ftp> literal pasv
227 Entering Passive Mode (69,28,68,87,255,170)
ftp> ls
500 I won't open a connection to xx.xx.xx.xx (only to yy.yy.yy.yy)
我尝试了 PASV 模式,但是不起作用。
除了 RDP 之外,我的安全组上没有打开任何内容。
Windows 防火墙也在服务器上运行,其看起来像亚马逊的默认配置。
一旦我使此连接正常工作,我可能会将数据从 SSIS 包通过 FTP 传输到他们的服务器,FWIW。
我知道 FTP 在通过 NAT 时会有些奇怪,因为打开的连接会返回。我需要做什么?
答案1
Windows 内置的命令行 FTP 客户端根本不支持被动模式。你在互联网上找到的那些关于literal pasv
或quote pasv
实际上对 FTP 客户端没有任何作用的黑客程序;它们告诉服务器进入被动模式,但客户仍然一无所知。您需要获取第三方 FTP 客户端。
答案2
问题是您的 pasv 命令告诉服务器连接到内部 IP。而不是您的外部 IP。由于两个原因,这不会起作用。
- 服务器无法看到你的内部 IP。
- 虽然 ftp 协议确实支持您设置数据连接以与控制连接不同的 ip 进行通信。大多数服务器现在拒绝遵守它(出于安全原因),有些服务器会简单地忽略 ip 并仅使用端口。其他服务器(例如这个)将拒绝接受命令。