FTP-сервер подключен, но не отвечает - PullRequest
0 голосов
/ 03 октября 2019

Я настраиваю FTP-сервер, используя vsftpd. Чтобы проверить это, я установил FTP-соединение с использованием ftplib:

connection = ftplib.FTP(host)
connection.login(user=username, passwd=password)

и проверил, что оно подключено с помощью:

connection.voidcmd("NOOP")

Однако выполнение почти ничего не работает. Например:

connection.nlst()

Ожидание бесконечно, а затем время ожидания.

Подключение через ftp (ubunut). Я вижу сообщение:

Вход в пассивный режим (0, 0,0,0, xxx, xxx).

Filezilla работает, как это может быть?

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Вход в пассивный режим (0,0,0,0, xxx, xxx).

Сервер присваивает неверный адрес назначения 0.0.0.0 в качестве пункта назначения для подключения к данным. Это связано с ошибкой или неправильной настройкой сервера. Попытка подключиться к этому неправильному IP-адресу, конечно, не удастся.

Некоторые клиенты, такие как FileZilla, все равно будут работать, поскольку они просто игнорируют указанный IP-адрес и используют только порт. Такое поведение имеет смысл, поскольку при наиболее распространенном использовании FTP (прямая передача между одним клиентом и одним сервером) IP-адрес назначения соединения для передачи данных будет таким же, как и для управляющего соединения, то есть оба будут IP-адресом соединения. сервер. Это также отражено в более новых командах EPSV и EPRT, которые только определяют порт и больше не IP-адрес.

0 голосов
/ 03 октября 2019

Проблема в том, что пассивное соединение не работает. Это может быть связано с тем, что:

  1. пассивный адрес не определен в файле vsftpd.conf: pasv_address = `
  2. и listen, и listen_ipv6 определены в файле vsftpd. conf

На всякий случай также проверьте, не открыты ли пассивные порты по правилам брандмауэра

...