2

Я использую Arch Linux с ядром 2.6.35-ec2. У меня установлена и работает самая последняя версия VSFTPD. Вот его файл журнала:

anonymous_enable=YES
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

Это не мой окончательный вариант, но я сократил его, чтобы он заработал.

Сервер находится на Amazon EC2, и порты 20 и 21 открыты для него. Другой брандмауэр не включен.

Я пытаюсь подключиться на OSX с /usr/bin/ftp и с клиентом Transmit . Первый зависает надолго и в итоге говорит, что время соединения истекло. Последнее занимает около десяти секунд, чтобы сказать, что время соединения истекло. Я попытался указать порты 20 и 21.

Нет ничего ни в одном из обычных файлов журналов Arch Linux, таких как auth.log и everything.log. /var/log/vsftpd.log даже не существует.

Может ли кто-нибудь помочь мне понять, с чего начать? Вики из Arch Linux и другие материалы, которые я читал, предполагают, что это де-факто стандартный легкий FTP-сервер.

2 ответа2

3

После просмотра другого ответа и комментариев это может быть связано с тем, что vsftp не хочет запускаться от имени пользователя root (потому что это очень безопасный ftp, :-)).

Насколько я помню, он хочет запускаться от имени пользователя ftp (или, как я помню, настраивал его).

1

Есть два режима FTP - режим порта и пассивный режим. Разница в том, как сервер пытается установить соединение для передачи данных (первоначальное соединение - это соединение команд, через которое вы отправляете команды на сервер, а соединение для передачи данных - это вторичное соединение, используемое для передачи файлов).

В режиме порта сервер будет пытаться подключиться к порту 20 на клиенте. Так что это входящее соединение от сервера к клиенту. Для того, чтобы это работало, вам потребуется открыть порт 20 на стороне клиента и перенаправить его инициатору сеанса ftp. Обычно это неосуществимо в условиях, не связанных с бизнесом.

В пассивном режиме сервер открывает для себя дополнительный порт в дополнение к порту 21. Этот порт согласовывается во время передачи части сеанса и инструктирует клиента подключиться к порту выше 1024 для загрузки или выгрузки данных. Этот режим намного лучше подходит для транзакций клиент-сервер, где между устройствами находятся NAT.

Чтобы это работало, брандмауэр, защищающий сервер, должен разрешать соединения через пассивный порт. Со многими брандмауэрами они поддерживают ftp-протокол и, таким образом, наблюдают за согласованным портом и разрешают соединение. Однако это не всегда выполнимо, поэтому диапазон необходимо открыть вручную.

Лучший способ настроить это - определить диапазон портов в конфигурации vsftpd:

pasv_min_port = 31000
pasv_max_port = 32000

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

/etc/hosts.allow|deny

Эти два файла обеспечивают всеобъемлющий контроль над тем, что может подключаться к серверу. Пожалуйста, убедитесь, что они оба присутствуют, и в hosts.deny не должно быть никаких отрицающих утверждений.

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