Я установил pure-ftpd на гостевой компьютер. Я попытался подключиться к FTP-серверу гостевой машины с гостевой машины с номером порта 21 и смог успешно подключиться к нему.
На хост-машине я добавил следующую команду, чтобы перенаправить порт 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-серверу с хост-машины, он спросил меня пароль для пользователя, которого я на гостевой машине, и аутентификация прошла успешно. Но когда он попытался составить список каталогов, он показал мне сообщение об ошибке, в котором говорилось следующее:
. 117] Не удалось отобразить содержимое папки.
Не удалось отобразить все содержимое «/ in localhost: 2121»: не удается открыть подключение для передачи данных. Может быть, ваш брандмауэр блокирует это?
Как решить проблему?
FTP может быть сложным протоколом. Управляющее соединение (обычно) устанавливается на порт. Это соединение используется для аутентификации и отправки команд на сервер. Передача данных происходит по другому соединению. Обычно это порт 20. Что происходит, когда клиент запрашивает данные у сервера через порт 21, а затем сервер открывает соединение с клиентом через порт 20 для передачи данных. Именно здесь может помешать брандмауэр на компьютере, на котором работает клиент ftp (он может заблокировать входящее соединение с сервера ftp).
FTP имеет пассивный режим, который должен заставлять ftp-сервер передавать данные клиенту через управляющее соединение, а не открывать новое соединение для передачи данных. Я думаю, что команда - PASV, но я никогда не пробовал это сам.
Я надеюсь, что это полезно.