连接到 FTP 站点时,我收到错误“服务器发送了带有不可路由地址的被动回复。请改用服务器地址。”(不是 SFTP)。
我已多次连接到该站点,但是 FileZilla 这次第一次要求我接受证书。
这似乎不是我正在连接的帐户的问题,因为它发生在该服务器上的所有帐户上。
答案1
这是一个老问题,但我认为它可能对其他人有帮助。我有一个类似的问题,@HBrujin 提到我也指定了正确的 pasv_address,但 Filezilla 上仍然出现类似的消息。
首先,通过在 FileZilla 中启用调试模式,找出你通过 PASV 命令获取的 IP 地址,你可能会看到如下行
Response: 227 Entering Passive Mode (0,0,0,0,4,7).
我希望使用我的公共地址而不是 0.0.0.0,因为我已经指定了 pasv_address。后来意识到这是由于 listen_ipv6=YES 设置而 pasv_address 有 IP4。只需将更改配置添加到
#listen_ipv6=YES
listen=YES
解决了我的问题。
答案2
当客户端发起数据传输时,它会询问 FTP 服务器要连接到哪里。服务器提供的 IP 地址很可能是其网络上的内部地址,而不是客户端可以使用的外部 IP 地址。这是服务器端的错误配置。
但由于这是一个相当常见的错误配置,许多 FTP 客户端(包括 FileZilla)都可以解决这个问题。如果从客户端的网络位置无法路由,它们会忽略服务器提供的任何 IP 地址,并使用 FTP 服务器地址。这就是发生的事情。
请参阅我最近的回答被动模式架构解释。
关于证书接受:由于您没有与我们分享 FileZilla 要求您接受证书的原因,我们无法真正帮助您。
答案3
乍一看,这似乎是 NAT 问题,FTP 协议助手由于 TLS 加密而失败,我预计这也会成为防火墙问题。
一些背景知识这里在我的一个较早的回答中。
解决方案可能是修复 FTP over SSL 可以使用的被动 TCP 端口范围,让 FTP 服务器通告外部 IP 地址而不是实际的 ip 地址(pasv_address
VSFTPD 中的指令),并为这些端口创建静态 NAT 规则。
答案4
- 如果你使用 vsftpd,请设置
pasv_min_port=21000
pasv_max_port=21999
在 vsftpd.conf 文件中。
- 在您的 VPS/云提供商的网络控制台面板中打开该端口范围。