Ćwiczyłem ftp, ale napotkałem problem: polecenie ls nie działa na ftp>. Dlaczego? Sprawdziłem na 2 zdalnych serwerach, ale ls nie działał na żadnym z nich i podałem inne dane wyjściowe, gdy ls został wykonany. Poniżej znajdują się 2 zdalne skrzynki.
Poniżej pokazano mój zdalny serwer, na którym dzisiaj zainstalowałem 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>
Poniżej przedstawiono inny komputer zdalny, na którym muszę wysłać niektóre pliki. Ale ponieważ ls na ftp> nie działa, w jaki sposób mogę przenieść pliki z mojego lokalnego pudełka do tego pudełka, ponieważ nie mogę potwierdzić bez ls, czy pliki zostały przesłane, czy nie.
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
Pamiętaj, że dla powyższej maszyny, gdy uruchomiłem ls na ftp>, monit nie wrócił.
Na obu komputerach zdalnych otrzymałem inne dane wyjściowe po uruchomieniu ls na ftp>
man ftp
i znalazłem-p
opcję do użycia w trybie pasywnym. Jakman ftp
wspomniano, ftp jest interfejsem użytkownika do standardowego internetowego protokołu przesyłania plików: więc jest to interfejs, a nie klient ftp !!! Rozumiem, że klient ftp używa tego interfejsu (ftp) do przesyłania plików.Odpowiedzi:
FTP to starożytny protokół. Opiera się on na dwóch połączeniach TCP: połączeniu sterującym, przez które wymieniane są polecenia, oraz połączeniach danych dla zawartości plików, a także dla wyjścia takich poleceń jak
ls
. To, co się tutaj dzieje, polega na ustanowieniu połączenia sterującego, ale połączenia danych nie są realizowane.Domyślnie (tryb aktywny) połączenia danych są ustanawiane od nadawcy do odbiorcy. Dane wyjściowe
ls
są wysyłane przez serwer, więc serwer próbuje otworzyć połączenie z klientem. Działało to dobrze, kiedy wynaleziono FTP, ale obecnie klienci często znajdują się za zaporą ogniową lub NAT, które mogą, ale nie muszą obsługiwać aktywnego FTP. Przejdź do trybu pasywnego, w którym klient zawsze inicjuje połączenie danych.Sprawdź instrukcję swojego
ftp
polecenia, aby zobaczyć, jak domyślnie przejść do trybu pasywnego. Na przykład, jednorazowe naciśnięcie poleceniapassive
zwykle załatwia sprawę .Możesz przełączyć się na ładniejszego klienta FTP, takiego jak ncftp lub lftp .
źródło
.netrc
na moim lokalnym urządzeniu (po prostu umieściłem hash na początku linii w .netrc). To wszystko, po czym stanęłem przed problemem. Co może być przyczyną tego, że ls działał dobrze wcześniej, a od wczoraj nie działa?lftp
. Mam doświadczenie w pracy z tym.lftp
jest naprawdę niesamowity. Chciałbym również dodać, że właśnie sprawdziłemlftp
i jest idealnie w porządku, bez problemu z ls.ls
tutaj (w lftp) poprawnie wyświetla dane wyjściowe.Pełna Kompletne rozwiązanie dla „nielegalnego polecenia PORT ftp 500”. Kliknij następujący link: http://www.ucodice.com/articles/ftp-500-illegal-port-command/ .
Fragment
Próba połączenia z serwerem ftp i uzyskanie 500 nielegalnych poleceń portu. Ten problem może wystąpić, gdy program ftp nie jest skonfigurowany do trybu pasywnego.
Możesz otrzymać fragment błędu, taki jak:
Aby rozwiązać ten problem, możesz zdefiniować port lub ftp w pliku konfiguracyjnym serwera ftp i zdefiniować adres IP lub serwer PASV.
Sprawdź plik konfiguracyjny pod kątem poniższych ustawień.
Następnie uruchom ponownie usługę ftp i sprawdź połączenie ftp.
źródło