这是我所看到的:
$ telnet ec2-???-???-232-82.compute-1.amazonaws.com 21
Trying ???.???.232.82...
Connected to ec2-???-???-232-82.compute-1.amazonaws.com.
Escape character is '^]'.
220 (vsFTPd 2.3.5)
USER foo
331 Please specify the password.
PASS secret
230 Login successful.
PASV
Connection closed by foreign host.
为什么会发生这种情况?
这是其中的一部分/etc/vsftpd.conf
:
pasv_enable=YES
pasv_min_port=5000
pasv_max_port=5200
答案1
您可能需要为实例授权所选的被动端口。这可以在 AWS 管理控制台中使用以下命令完成
ec2-authorize default -p <starting port>-<end port>
所以应该
ec2-authorize default -p 5000-5200
就你的情况而言。
编辑:当然,不要忘记记下公共地址
pasv_address=???.???.232.82
正如你所指出的。
答案2
对于 7 年后来到这里的其他人:我遇到了一个问题,之后 EC2 实例上的连接立即断开PASV
,这是由于 vsftpd 在 ipv6 上监听造成的。
通过设置listen_ipv6=NO
和来修复listen=YES
。