Команда ls в ftp> не работает!

17

Я практиковал ftp, но столкнулся с проблемой: команда ls не работает на ftp>. Почему? Я проверил на 2 удаленных серверах, но ls не работал ни на одном и выдал другой вывод при выполнении ls. Пожалуйста, смотрите ниже для 2 удаленных коробок.

Ниже показан мой удаленный сервер, на котором я сегодня установил vsftpd.

ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua): 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp> 

Ниже приведено описание другой удаленной машины, на которую я должен отправить несколько файлов. Но так как ls на ftp> не работает, как я буду переносить файлы из своего локального ящика в этот ящик, потому что я не могу подтвердить без ls, были ли файлы переданы или нет.

ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful

Обратите внимание, что для вышеупомянутой машины после запуска ls на ftp> приглашение не возвращалось.

На обеих удаленных машинах я получил различный вывод при выполнении ls на ftp>

Ravi
источник
3
использовать пассивный режим. Проверьте man-страницу вашего ftp-клиента, чтобы узнать, как его включить.
Стефан Шазелас
Как узнать, какой FTP-клиент работает на моем конце?
Рави
@Stephane спасибо! Я побежал man ftpи нашел -pвариант, который будет использоваться для пассивного режима. Как man ftpупоминается, что ftp является пользовательским интерфейсом к стандартному протоколу передачи файлов в Интернете: это интерфейс, а не клиент ftp !!! Я понимаю, что клиент FTP использует этот интерфейс (FTP) для передачи файлов.
Рави

Ответы:

26

FTP это древний протокол. Он опирается на два TCP-соединения: управляющее соединение, по которому обмениваются команды, и соединения для передачи данных для содержимого файлов, а также для вывода таких команд, как ls. Здесь происходит то, что управляющее соединение установлено, но соединения для передачи данных не проходят.

По умолчанию (активный режим) соединения данных устанавливаются от отправителя к получателю. Для вывода lsданные отправляются сервером, поэтому сервер пытается открыть соединение с клиентом. Это хорошо работало, когда был изобретен FTP, но в настоящее время клиенты часто находятся за брандмауэром или NAT, которые могут поддерживать или не поддерживать активный FTP. Переключитесь в пассивный режим, где клиент всегда инициирует соединение для передачи данных.

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

Вы можете переключиться на более хороший FTP-клиент, такой как ncftp или lftp .

Жиль "ТАК - перестань быть злым"
источник
Благодарность!! Но почему вдруг возникла эта проблема. Раннее я смог запустить ls на ftp>. Но вчера я установил vsftpd на своем удаленном сервере (мой VPS), а также отредактировал файл .netrcна своем локальном компьютере (просто поместил хеш в начале строки в .netrc). Вот и все, а потом после вопроса о ls я столкнулся. В чем может быть причина того, что ls работал нормально раньше, а со вчерашнего дня не работал?
Рави
Вы правы, чтобы предложить lftp. У меня есть опыт работы с этим. lftpдействительно удивительно. Также я хотел бы добавить, что я только что проверил, lftpи он отлично работает без проблем с ls. lsздесь (в lftp) отображается вывод правильно.
Рави
3

Полное полное решение для "ftp 500 Illegal PORT command". Нажмите на следующую ссылку: http://www.ucodice.com/articles/ftp-500-illegal-port-command/ .

выдержка

Попытка подключиться к серверу ftp и получить команду 500 Illegal port. Эта проблема может возникнуть, если программа ftp не настроена на пассивный режим.

Вы можете получить фрагмент ошибки, такой как:

COMMAND:>              [3/11/2015 1:17:05 PM] PORT 192,168,0,101,196,215    
                       [3/11/2015 1:17:05 PM] 500 Illegal PORT command.    
ERROR:>                [3/11/2015 1:17:05 PM] Syntax error: command unrecognized.    
ERROR:>                [3/11/2015 1:17:05 PM] Failed to establish data socket.

Для решения этой проблемы вы можете определить порт или ftp в файле конфигурации сервера ftp и определить IP-адрес или сервер PASV.

Проверьте конфигурационный файл для следующих настроек.

pasv_enable=YES
pasv_promiscuous=YES
pasv_max_port=Enter the max port range allowed on your server.
pasv_min_port=Enter the min port range allowed on your server.
pasv_address=Ip Address of your server.

После этого перезапустите службу ftp и проверьте соединение ftp.

Манодж Кумар
источник