主机操作系统和来宾操作系统之间的FTP LIST命令失败


4

我在主机操作系统(Windows 7)和客户操作系统(Ubuntu 10.04)之间设置FTP时遇到问题。我使用VirtualBox中的网络设置来设置80,21和22上的端口转发。在端口80上访问网络服务器效果很好,但我在端口21上使用FTP和在22上使用SFTP时遇到了一些问题。

这是我在FileZilla中尝试连接端口21时的输出:

Status: Connecting to 127.0.0.1:21...
Status: Connection established, waiting for welcome message...
Response:   220 (vsFTPd 2.2.2)
Command:    USER menuplus
Response:   331 Please specify the password.
Command:    PASS *****
Response:   230 Login successful.
Status: Connected
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/srv/www/vhosts/mp"
Command:    TYPE I
Response:   200 Switching to Binary mode.
Command:    PASV
Response:   227 Entering Passive Mode (10,0,2,15,205,164).
Command:    LIST
Error:  Connection timed out
Error:  Failed to retrieve directory listing

建立连接,但LIST命令失败,这使我可能客户操作系统上的权限设置错误,但FTP用户可以完全访问其主目录。

可能有什么不对?

Answers:


3
Command:    PASV
Response:   227 Entering Passive Mode (10,0,2,15,205,164).
Command:    LIST
Error:  Connection timed out

正如您所希望看到的那样,错误消息是“连接超时”。如果存在权限问题,LIST将立即失败并从远程端发出“拒绝访问”或“权限被拒绝”响应。

FTP不适用于NAT。它使用单独的控制和数据连接 - 每次需要数据连接时,FTP客户端必须连接到服务器的PASV结果提供的地址。在这种情况下,您的服务器告诉客户端连接到10.0.2.15以获取LIST输出 - 由于虚拟机位于VirtualBox NAT之后,这不起作用。 (更高级的NAT实现,例如家庭路由器中的实现,“调整”FTP流量来解决这个问题。)

您的选择是使用VirtualBox“桥接”网络,这使您的VM成为真实网络的一部分,或使用SFTP,它始终使用单个控制/数据连接和 不应该 有同样的问题。


1
那么还有另一个选择,仍然在NAT背后。配置来宾FTP服务器 serverfault.com/a/165468/126443 。其中地址为127.0.0.1,端口范围应仅允许1或2个端口(即10000-10001)。然后只需将端口21,10000和10001从主机转发到guest虚拟机。
antitoxic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.