ftp>의 ls 명령이 작동하지 않습니다!


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> 

아래는 파일을 보내야하는 다른 원격 컴퓨터에 대한 것입니다. 그러나 ftp>의 ls가 작동하지 않기 때문에 파일이 전송되었는지 여부를 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

위의 컴퓨터에서 ftp>에서 ls를 실행하면 프롬프트가 다시 나타나지 않습니다.

두 원격 시스템 모두에서 ftp에서 ls를 실행할 때 다른 출력을 얻었습니다.>


3
수동 모드를 사용하십시오. 활성화하는 방법은 ftp 클라이언트 매뉴얼 페이지를 확인하십시오.
Stéphane Chazelas

내 끝에 어떤 ftp 클라이언트가 실행되고 있는지 확인하는 방법?
Ravi

감사합니다! 나는 실행 man ftp하고 발견 된 -p수동 모드에 사용할 옵션을 선택합니다. man ftp언급 했듯이 ftp는 인터넷 표준 파일 전송 프로토콜에 대한 사용자 인터페이스입니다. 따라서 ftp 클라이언트가 아닌 인터페이스입니다 !!! 내가 이해하는 것은 ftp 클라이언트가 파일 전송 에이 인터페이스 (ftp)를 사용한다는 것입니다.
Ravi

답변:


26

FTP는 고대 프로토콜입니다. 이 명령은 두 가지 TCP 연결 , 즉 명령이 교환되는 제어 연결 과 파일 내용 및과 같은 명령 출력에 대한 데이터 연결 에 의존합니다 ls. 여기서 일어나는 일은 제어 연결이 설정되었지만 데이터 연결이 진행되지 않는다는 것입니다.

기본적으로 (활성 모드) 데이터 연결은 발신자에서 수신자로 설정됩니다. 의 출력을 ls위해 서버가 데이터를 전송하므로 서버는 클라이언트에 대한 연결을 열려고 시도합니다. 이것은 FTP가 발명되었을 때 잘 작동했지만 오늘날 클라이언트는 종종 활성 FTP를 지원하거나 지원하지 않을 수있는 방화벽이나 NAT 뒤에 있습니다. 클라이언트가 항상 데이터 연결을 시작하는 수동 모드로 전환하십시오.

ftp기본적으로 수동 모드로 전환하는 방법을 보려면 명령 설명서를 확인하십시오 . 한 번만 명령을 입력하면 passive일반적으로 트릭이 수행됩니다.

ncftp 또는 lftp 와 같은 더 멋진 FTP 클라이언트로 전환 할 수 있습니다 .


감사!! 그러나 왜 갑자기이 문제가 발생했습니다. Eariler 나는 ftp에서 ls를 실행할 수 있었다>. 그러나 어제 원격 서버 (vs VPS)에 vsftpd를 설치 .netrc하고 로컬 상자의 파일 을 편집했습니다 (.netrc의 줄 시작 부분에 해시를 넣었을뿐입니다). 그게 전부입니다. 그리고 내가 겪은 ls의 문제 후에. ls가 일찍 작동하고 어제 작동하지 않은 이유는 무엇입니까?
Ravi

당신은 제안 할 권리가 있습니다 lftp. 나는 그 일을 한 경험이 있습니다. lftp정말 놀랍습니다. 또한 방금 지금 확인했으며 lftpls 문제없이 완벽하게 실행되고 있음을 추가하고 싶습니다 . ls여기 (lftp에서) 출력이 올바르게 표시됩니다.
Ravi

3

"ftp 500 Illegal PORT command"에 대한 완벽한 솔루션. http://www.ucodice.com/articles/ftp-500-illegal-port-command/ 링크를 클릭 하십시오 .

발췌

ftp 서버에 연결하려고 시도하고 500 개의 잘못된 포트 명령을받습니다. 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 연결을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.