Я практиковался в 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>
решение1
FTP — древний протокол. Он использует два TCP-соединения:контрольное соединениепо которым происходит обмен командами, исоединения данныхдля содержимого файлов, а также для вывода команд, таких как ls
. Здесь происходит следующее: управляющее соединение установлено, но соединения данных не проходят.
По умолчанию (активный режим) соединения для передачи данных устанавливаются от отправителя к получателю. Для вывода ls
данные отправляются сервером, поэтому сервер пытается открыть соединение с клиентом. Это работало хорошо, когда был изобретен FTP, но в настоящее время клиенты часто находятся за брандмауэром или NAT, которые могут поддерживать или не поддерживать активный FTP. Переключитесь в пассивный режим, в котором клиент всегда инициирует соединение для передачи данных.
Проверьте руководство по вашей ftp
команде, чтобы узнать, как переключиться в пассивный режим по умолчанию. Для одноразового действия passive
обычно достаточно ввести команду.
Возможно, вы захотите переключиться на более удобный FTP-клиент, напримерncftpилифтп.
решение2
Полное решение для "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.