我在Guest机器上安装了pure-ftpd,尝试从Guest机器的21端口连接Guest机器的FTP服务器,成功连接。
在主机中,我添加了以下命令,以便将主机的端口 2121 重定向到客户机的端口 21 并连接到客户机的 FTP 服务器。
VBoxManage setextradata Ubuntu "VBoxInternal/Devices/e1000/0/LUN#0/Config/FTP/HostPort" 2121
VBoxManage setextradata Ubuntu "VBoxInternal/Devices/e1000/0/LUN#0/Config/FTP/GuestPort" 21
VBoxManage setextradata Ubuntu "VBoxInternal/Devices/e1000/0/LUN#0/Config/FTP/Protocol" TCP
但是,当我尝试从主机访问此来宾 FTP 服务器时,它要求我输入来宾计算机上的用户密码,并且身份验证成功通过。但是当它尝试列出目录时,它向我显示了一条错误消息,内容如下:
如果你将其翻译成英文,则如下:
无法显示文件夹内容。
无法显示“localhost:2121 中的 /”的全部内容:无法打开数据连接。可能是您的防火墙阻止了它?
如何解决这个问题?
答案1
FTP 可能是一种棘手的协议。控制连接(通常)在端口上设置。此连接用于身份验证和向服务器发送命令。数据传输发生在不同的连接上。通常这是在端口 20 上。发生的情况是,客户端在端口 21 上从服务器请求数据,然后服务器在端口 20 上打开一个连接回客户端以传输数据。这时,运行 ftp 客户端的计算机上的防火墙可能会妨碍(它可能会阻止来自 ftp 服务器的传入连接)。
FTP 有一个被动模式,该模式应该使 FTP 服务器通过控制连接将数据传输到客户端,而不是打开新的连接进行数据传输。我认为命令是 PASV,但我自己从未尝试过。
我希望这是有帮助的。