Я практиковал 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>
man ftp
и нашел-p
вариант, который будет использоваться для пассивного режима. Какman ftp
упоминается, что ftp является пользовательским интерфейсом к стандартному протоколу передачи файлов в Интернете: это интерфейс, а не клиент ftp !!! Я понимаю, что клиент FTP использует этот интерфейс (FTP) для передачи файлов.Ответы:
FTP это древний протокол. Он опирается на два TCP-соединения: управляющее соединение, по которому обмениваются команды, и соединения для передачи данных для содержимого файлов, а также для вывода таких команд, как
ls
. Здесь происходит то, что управляющее соединение установлено, но соединения для передачи данных не проходят.По умолчанию (активный режим) соединения данных устанавливаются от отправителя к получателю. Для вывода
ls
данные отправляются сервером, поэтому сервер пытается открыть соединение с клиентом. Это хорошо работало, когда был изобретен FTP, но в настоящее время клиенты часто находятся за брандмауэром или NAT, которые могут поддерживать или не поддерживать активный FTP. Переключитесь в пассивный режим, где клиент всегда инициирует соединение для передачи данных.Проверьте руководство вашей
ftp
команды, чтобы увидеть, как перейти в пассивный режим по умолчанию. Для одноразового набора командыpassive
обычно достаточно.Вы можете переключиться на более хороший FTP-клиент, такой как ncftp или lftp .
источник
.netrc
на своем локальном компьютере (просто поместил хеш в начале строки в .netrc). Вот и все, а потом после вопроса о ls я столкнулся. В чем может быть причина того, что ls работал нормально раньше, а со вчерашнего дня не работал?lftp
. У меня есть опыт работы с этим.lftp
действительно удивительно. Также я хотел бы добавить, что я только что проверил,lftp
и он отлично работает без проблем с ls.ls
здесь (в lftp) отображается вывод правильно.Полное полное решение для "ftp 500 Illegal PORT command". Нажмите на следующую ссылку: http://www.ucodice.com/articles/ftp-500-illegal-port-command/ .
выдержка
Попытка подключиться к серверу ftp и получить команду 500 Illegal port. Эта проблема может возникнуть, если программа ftp не настроена на пассивный режим.
Вы можете получить фрагмент ошибки, такой как:
Для решения этой проблемы вы можете определить порт или ftp в файле конфигурации сервера ftp и определить IP-адрес или сервер PASV.
Проверьте конфигурационный файл для следующих настроек.
После этого перезапустите службу ftp и проверьте соединение ftp.
источник