Polecenie ls w ftp> nie działa!


17

Ć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>


3
użyj trybu pasywnego. Sprawdź stronę podręcznika klienta ftp, aby dowiedzieć się, jak ją włączyć.
Stéphane Chazelas

Jak się dowiedzieć, który klient ftp działa na moim końcu?
Ravi

@stephane dzięki! Pobiegłem man ftpi znalazłem -popcję do użycia w trybie pasywnym. Jak man ftpwspomniano, 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.
Ravi

Odpowiedzi:


26

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 lssą 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 ftppolecenia, aby zobaczyć, jak domyślnie przejść do trybu pasywnego. Na przykład, jednorazowe naciśnięcie polecenia passivezwykle załatwia sprawę .

Możesz przełączyć się na ładniejszego klienta FTP, takiego jak ncftp lub lftp .


Dzięki!! Ale dlaczego nagle ten problem się pojawił. Eariler Byłem w stanie uruchomić ls na ftp>. Ale wczoraj zainstalowałem vsftpd na moim zdalnym serwerze (mój VPS), a także edytowałem plik .netrcna 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?
Ravi

Masz rację, sugerując lftp. Mam doświadczenie w pracy z tym. lftpjest naprawdę niesamowity. Chciałbym również dodać, że właśnie sprawdziłem lftpi jest idealnie w porządku, bez problemu z ls. lstutaj (w lftp) poprawnie wyświetla dane wyjściowe.
Ravi

3

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:

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.

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ń.

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.

Następnie uruchom ponownie usługę ftp i sprawdź połączenie ftp.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.