1

Я на OSX 10.11 и у меня есть гость VirtualBox под управлением Windows 2008 Server R2 x64 (с сетью NAT), работающий под управлением IIS с FTP на порту 21.

Моя проблема: я могу войти в FTP с хоста, но не могу видеть списки каталогов или получать файлы.

FTP был установлен таким образом, и есть запись брандмауэра Windows, позволяющая TCP через порт 21.

Порт 21 гостя перенаправляется на порт 8021 хоста. Вход в систему гостя на FTP выполнен успешно, но я не могу просматривать файлы с использованием FTP.

На хосте: используя командную строку для FTP, я получаю это:

$ ftp localhost 8021
Trying ::1...
ftp: Can't connect to `::1': Connection refused
Trying fe80::1%lo0...
ftp: Can't connect to `fe80::1%lo0': Connection refused
Trying 127.0.0.1...
Connected to localhost.
Name (localhost:david): Administrator
331 Password required for Administrator.
Password: ****
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
229 Entering Extended Passive Mode (|||49170|)
ftp: Can't connect to `127.0.0.1': Connection refused
501 Server cannot accept argument.
150 Opening ASCII mode data connection.
ftp: Poll timeout waiting before accept
425 Cannot open data connection.


^C
421 Service not available, user interrupt. Connection closed.
ftp> quit

Используя Transmit to FTP, появляется сообщение об ошибке:

Не удалось получить список файлов для «/». Сервер сказал: Сервер не может принять аргумент.

Ошибка -162: сбой PORT

На гостевой: Командная строка FTP работает нормально ...

C:\Users\Administrator>ftp localhost
Connected to XXX.
220-Microsoft FTP Service
User (XXX:(none)): Administrator
331 Password required for Administrator.
Password: *****
230 User logged in.
ftp> dir
200 EPRT command successful.
125 Data connection already open; Transfer starting.
06-22-16  10:42AM       <DIR>          contracts
05-25-16  02:35PM               184946 welcome.png
226 Transfer complete.
ftp: 356 bytes received in 0.00Seconds 356000.00Kbytes/sec.
ftp>

Есть что-то очевидное, что я пропустил? Какие следующие шаги я должен выполнить, чтобы заставить FTP работать?

2 ответа2

1

ОК, я понял это. Я включил IIS для работы в пассивном режиме

На гостевой виртуальной машине Windows:

  1. Нажмите Пуск и перейдите в Администрирование-> Диспетчер служб IIS.
  2. Выберите страницу общих настроек сервера IIS.
  3. Откройте функцию поддержки брандмауэра FTP и добавьте диапазон портов (я добавил 8020-8020) для пассивного режима, затем нажмите «Применить».

На хосте:

  1. В VirtualBox выберите виртуальную машину и перейдите в Сеть
  2. Добавьте переадресацию портов для дополнительного порта пассивного режима FTP. Переадресация с порта 8020 гостя на порт 8020 хоста.
  3. Перезагрузите виртуальную машину.

Теперь я получаю следующий результат при использовании FTP с хоста:

$ ftp localhost 8021
Trying ::1...
ftp: Can't connect to `::1': Connection refused
Trying 127.0.0.1...
Connected to localhost.
220-Microsoft FTP Service
Name (localhost:david): Administrator
331 Password required for Administrator.
Password: ****
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
229 Entering Extended Passive Mode (|||8020|)
125 Data connection already open; Transfer starting.
06-22-16  10:42AM       <DIR>          contracts
05-25-16  02:35PM               184946 welcome.png
226 Transfer complete.
0

Отредактировано (по запросу):

Ответ @dvdsmpsn (на самом деле ответ на его собственный вопрос) очень хорош, но у меня не сработал полностью. Я использую хост Windows 7 и гостя Ubuntu 16.04. Хотя системы были разные, проблема была та же.

Кто-то в других условиях, например, мой, может не установить соединение.

Мне также пришлось использовать знания из этих ответов:

https://serverfault.com/questions/421161/how-to-configure-vsftpd-to-work-with-passive-mode

Замечание @ brain99 о pasv_address=xxx.xxx.xxx.xxx было очень важным. У меня не получилось без этого.

Сервер Ubuntu (гостевая ВМ):

Мой сервер Ubuntu имеет vsftpd в качестве FTP-сервера. Чтобы заставить его работать в пассивном режиме, мне нужно было добавить это в конец моего vsftpd.conf (внутри папки /etc - вы можете использовать функцию поиска, если вы используете оконный менеджер):

pasv_enable=YES
pasv_min_port=8020 # like @dvdsmpsn recommended
pasv_max_port=8020 # like @dvdsmpsn recommended
pasv_address=127.0.0.1 # added like @brian99 recommended, BUT I used the localhost address.

Я использовал адрес localhost, потому что у моей виртуальной машины нет публичного IP-адреса.

Только для тестирования я отключил UFW (мой брандмауэр). Я не хотел, чтобы что-то еще усложнило и без того сложную проблему.

Как отмечает пользователь @Martin Prikryl в своем ответе:

Подключение к FTP-серверу FileZilla работает, но список каталогов не удается

FTP использует два порта. Итак, мы собираемся перенести два порта вперед в VirtualBox.

Windows 7 (хост):

После того, как FTP-сервер работал в пассивном режиме, я следовал инструкциям @dvdsmpsn :

  1. В VirtualBox> Настройки виртуальной машины> NAT> Advanced> Port Fowarding я добавил две записи:

    Host Port 8021 to Guest Port 21 Host Port 8020 to Guest Port 8020

  2. Перезагрузите ВМ

Я протестировал эту настройку в FileZilla и Dreamweaver. Работало без проблем в пассивном режиме в обоих приложениях.

К сожалению, упомянутые ссылки ничего не говорят о chroot пользователях. Мой гость Ubuntu работает на веб-сервере Apache, и мне нужно поместить их в свои каталоги /home/$user .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .