Назад | Перейти на главную страницу

Filezilla FTP с вычислительным движком Google Cloud Виртуальный экземпляр Windows не перечисляет каталог

У меня есть экземпляр виртуальной машины Windows 2016 в облаке Google. Я добавил правило брандмауэра Windows для входящего трафика, чтобы разрешить порт 21. Я настроил облако Google с как входящими правилами брандмауэра для порта 21, так и исходящими для всех портов в качестве пассивного.

Я могу подключиться к своему FTP-серверу, но получаю эту ошибку.

Response:   425 Can't open data connection for transfer of "/"
Error:  Failed to retrieve directory listing

Обратите внимание, что я также включил TLS в filezilla, но с включенным TLS или без него я получил ту же ошибку.

Я безуспешно пытался полностью отключить брандмауэр Windows, поэтому либо мои настройки брандмауэра gcloud неверны, либо конфигурация filezilla неверна.

Любая помощь будет оценена по достоинству!

Если вы хотите работать с TLS, вам может потребоваться открыть порт 990 и даже порт 989. Другой вариант шифрования ваших данных - использовать SFTP. Есть хорошее руководство по настройке Filezilla на GCE с использованием SFTP. Вот

БЫТЬ КОРОТКИМ

Вам не нужно настраивать outbound rules в Google Cloud. В вашем случае кроме port 21 вам нужно добавить дополнительные порты, например 50000-50500 к Google Cloud Firewall (чтобы добавить к тому же правилу, где указан порт 21), затем вWindows Firewall (чтобы добавить к тому же правилу, где указан порт 21) и добавить 50000-50500 к FileZilla Settings на странице Passive mode settings

ПРИНАДЛЕЖАТЬ

Ниже полная инструкция (на случай, если кому-то понадобится) на основе Sever 2008, потому что я не использую Server 2016 (все должно быть очень похоже). Также я не использовал TLS как мне это не нужно. Настройки ниже позволяютFTP clients работать через Passive mode.


Настройки Google Cloud

  1. Перейти к VPC network -> Firewall rules;
  2. Нажмите Create firewall rule на вершине;
    • Название: default-allow-ftp (не важно);
    • Сеть: default (или тот, который вам нужен);
    • Приоритет: 1000 (не важно);
    • Направление движения: Ingress;
    • Действие при совпадении: Разрешить целевые теги: оставьте поле пустым (или выберите нужный);
    • Диапазоны исходных IP-адресов: 0.0.0.0/0 (или тот, который вам нужен);
    • Фильтр второго источника: None (или тот, который вам нужен);
    • Протоколы и порты: Указанные протоколы и порты: tcp:21,50000-50500.

Параметры брандмауэра Windows (взято из Вот. В источнике также показано, как настроить Firewall с помощью Command Line и PowerShell):

  1. Войдите в систему под учетной записью администратора;
  2. Нажмите Пуск -> Администрирование -> Брандмауэр Windows в режиме повышенной безопасности;
  3. На левой панели щелкните правой кнопкой мыши на Inbound Rules, а затем нажмите New Rule;
  4. в Rule Type раздел, выберите Port и нажмите Next:
  5. в Protocol and Ports раздел, выберите TCP как тип протокола и тип 21, 50000-50500 в Specific local ports поле ввода;
  6. в Action раздел, выберите Allow the Connection и нажмите Next;
  7. в Profile раздел, выберите все три варианта и нажмите Next. Если вы хотите ограничить подключение к определенному профилю, вы можете сделать это, выбрав только те профили, которые, по вашему мнению, подходят для вашей настройки. В этом примере мы откроем порт для всех профилей;
  8. в Name в разделе введите описательное имя для этого правила. Рекомендуется указывать номер порта в имени, чтобы правило было легко узнать. Нажмите Finish когда готов.

Настройки FileZilla

  1. Правка -> Настройки;
  2. В дереве выберите General setting;
    • Изменить поле Listen on these ports: к 21;
  3. В дереве выберите Passive mode settings;

    • Поставить галочку Use custom port range:, войти 5000 и 50500;
    • Выбрать Use the following IP и введите IP своего сервера (если он статический) или выберите Retrieve external IP address from:;
  4. Правка -> Пользователи;

  5. В дереве выберите General;
    • Справа нажмите Add и предоставить username который вы собираетесь использовать для подключения. В username не имеет никакого отношения к учетным записям пользователей Windows, поскольку FileZilla использует собственную систему учетных записей пользователей;
    • Поставить галочку Enable account, и при необходимости Password;
  6. В дереве выберите Shared folder;
    • Добавьте папку, которую вы хотите сделать в качестве «домашнего каталога», и определите необходимые разрешения для файлов и каталогов.

НОТЫ:

  1. Разрешения FileZilla не имеют никакого отношения к настройкам разрешений Windows для вашей папки «домашний каталог». Это означает, что если настройки FileZilla позволяют пользователю создавать папку \ файл, но разрешения настроены через Windows File Explorer не позволяет это сделать, то пользователь не может записывать какие-либо файлы \ папки в "домашний каталог".

  2. Для Windows пользователи, которые добавлены в FileZilla, являются чем-то вроде «неизвестного», поэтому Windows вообще не разрешает доступ к папке «домашний каталог». Чтобы исправить это, я просто добавил All профиль в настройках безопасности папки «домашний каталог».


Бонус # 1

Если при каждой загрузке FileZilla interface появляется, вы можете отключить такое поведение с помощью msconfig:

  1. Пуск -> тип msconfig;
  2. Startup вкладка -> Снять FileZilla Server -> Хорошо;
  3. Перезагрузка.

Бонус # 2

Если пользователи Linux хотят загрузить файл с ftp-сервера, используя command line:

wget ftp://username:password@server_ip_address/home_dir/file_name

Если отключение TLS сработало, это явный признак того, что брандмауэр не настроен или неправильно настроен. Даже если вы утверждаете, что отключили все брандмауэры, на самом деле это не так.

Некоторые межсетевые экраны достаточно умны, чтобы проверять FTP-трафик, открывая порты FTP-подключения для передачи данных по мере необходимости. Но если управляющее соединение зашифровано, брандмауэр не сможет его проверить и не сможет открыть для вас порты подключения к данным. Итак, с TLS вы должны сами настраивать правила.

Например, в брандмауэре Windows эта функция называется «FTP-фильтрация с отслеживанием состояния» и настраивается с помощью netsh advfirewall set global StatefulFtp ... команда.