SharedIT | 묻고 답하기(AMP)

FTP ls 및 파일 다운로드 오류

사내 FTP서버에 들어가 특정 파일을 다운로드하는 배치파일 스크립트를 작성 중입니다.

미리 실험을 해봤는데 cmd창을 통해 ftp서버에 접속하고 폴더에 접근하는 건 가능한데 ls나 mget * 명령어를 사용했을 때 '200 PORT command successful'은 뜨는데 그 뒤에 '425 Can't build data connection: Connection timed out' 이라는 메시지가 뜨며 명령어가 동작하질 않습니다.

폴더에 분명히 파일이 있는데도 다운로드가 되질 않습니다.

passive 명령어를 사용하면 된다는 글을 보았었는데 올바르지 않은 명령입니다. 라는 문구만 뜹니다.

추가로 방화벽을 내리면 해당 명령어가 동작을 하는데 방화벽을 올리면 동작하질 않습니다. 하지만 보안 상 방화벽을 내렸다 올리는 건 좋은 것 같지않아 다른 방법으로 해결하고자 합니다.

해결방법을 알 수 있을까요? 추가로 안 되는 이유까지 알려주시면 감사하겠습니다.

3개의 답변이 있습니다.

금명성
  0 추천 | 11달 전 | (주)옥시즌 | 0505-333-8575

안녕하세요?


해당 오류는 sftp 가 아닌 ftp 프로토콜을 사용 할 때, 데이터 포트를 연결하지 못하여 발생하는 오류입니다.


방화벽에 막혀 있기 때문인데.. 클라이언트에서 서버로 나가는 포트는 대부분 열어 놓기 때문에 Passive 모드로 하면 됩니다.


그런데, Windows 에서 기본 제공되는 ftp.exe 명령어는 passive 모드를 지원하지 않습니다.


이를 해결하려면 아래 방법 들 중 선택할 수 있을 것 같습니다.

  • 1.Passive 모드를 지원하는 클라이언트 툴(Filezilla, WinSCP 등) 사용

  • 2.타 업체에서 제공하는 Passive 모드 지원하는 실행파일 사용

  • 3.python 등 개발언어로 ftp passive 모드로 개발

  • 4.무조건 Active 모드만 사용 가능하다면, 방화벽에서 'ftp 서버 -> 클라이언트 pc' 로 들어오는 포트 개방

Simon.Park
  0 추천 | 11달 전

혹시나 Script 명령어 사이의 시간 텀을 두게끔 해서 해보시면 어떨까요.

가끔 너무 빠르게 명령어가 입력이 되어 문제가 되는 경우도 봤거든요....

wansoo
  0 추천 | 11달 전

Active mode로 연결되기 때문에 발생하는 증상입니다.

서버에서 Passive 모드를 설정해서 사용하면 되겠고...

Linux를 클라이언트로 해서 접속할때는 문제 없는데 Window cmd에서 기본 제공되는 ftp는 방화벽을 거쳐서 사용할 경우에 잘 안되는 경우가 종종 발생하는 것 같더군요.

Filezilla 등을 이용하는 것을 권장해 봅니다.


배치 스크립트를 이용해서 방화벽 넘어 있는 FTP 서버로 부터 자동으로 가져 오려하는데... 잘 안되는 상황이라면...

수동 모드를 잘 지원할 수 있는 FTP CLI 툴을 찾아 보거나...

SSH를 이용한 복사, RCP, CIFS 등을 이용한 방법 등도 고려해 보는게 좋지 않을까 하는 생각이 드네요.


FTP는 접속하는 포트가 임의 변경되는 경향이 있기 때문에 FTP 통신에 사용되는 모드 포트를 방화벽에서 차단하지 않도록 설정해서 사용하는 것도 우선 시도 해 보시고요.

FTP 서버에서 Passive 설정할때 passive min port와 max port를 지정할때 사용하는 포트 범위를 좁게해서 설정하고, 방화벽에서 해당 포트들을 모두 개방 시켜 두고 시도해 볼 것을 권장합니다.