우분투에 Ftp 서버(Server) 설치 사용하기

아마 요즘에는 GUI가 있는 FTP 프로그램을 대부분 사용하고 계셔서,서버 관련 업무를 하는 분 외에는
ftp 프로그램을 명령어 레벨에서 사용하시는 분들은 거의 없을 거라고 생각됩니다만,
유닉스나 리눅스를 사용해 본 경험이 계신 분들은 우분투를 처음 설치하시고 나면 당황스러운 것이
당연히 기본 설치 되어 있을 거라고 생각하고 있는
telnet 서버 와 ftp 서버가 설치 되어 있지 않다는 사실입니다.

우분투에서는 보안상의 이유로 ssh나 sftp 사용을 권장하고, 기존 telnet이나 ftp를 권장하진 않지만,
저 같은 경우는 이미 익숙해진 툴이라 없으면 많이 불편하여, 내부 네트웨크에서는 계속 사용하고 있습니다.
여기에서는 리눅스에서 많이 사용하는 vsftpd Server를 우분투에 설치 해 보겠습니다.
참고로 제 우분투 버젼은 64비트 14.04 LTS 버젼입니다.

설치 하기

 

설치는 우분투 Repository에서 지원하니,아래 명령 1줄로, 너무 간단합니다.

  • $ sudo apt-get install vsftpd
$ sudo apt-get install vsftpd

설정 하기

 

설정도 쉽습니다.
쓰기 권한을 주기 위해서 /etc/vsftpd.conf 파일에서 아래 부분을 찾아
# 코멘트만 제거해 주면, 기본적으로 사용할 수 있는 환경이 됩니다.

write_enable=YES
local_umask=022

서버가 클라이언트쪽에 비정상적인 접속시도를 하는 것을 막기 위한 passive 모드 사용을 위해선
아래 내용도 /etc/vsftpd.conf 파일 끝에 추가해 줍니다.

allow_writeable_chroot=YES
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=40100

서비스 컨트롤 방법

 

vsftp 서버의 시작/중지/재시작은 우분투의 service명령을 사용합니다.
아파치 서버 컨트롤과 같은 방식입니다.

  • $ sudo service vsftpd start ## vsftpd 데몬을 시작합니다.
  • $ sudo service vsftpd stop ## vsftpd 데몬을 멈춥니다.
  • $ sudo service vsftpd restart ## vsftpd 데몬을 재시작합니다.
$ sudo service vsftpd start ## vsftpd 데몬을 시작합니다.
$ sudo service vsftpd stop ## vsftpd 데몬을 멈춥니다.
$ sudo service vsftpd restart ## vsftpd 데몬을 재시작합니다.

ftp 명령어 사용법

 

ftp에서 제공하는 명령어 리스트는 ftp명령후 ftp프롬프트에서 help 명령으로 확인 가능합니다.

  • $ ftp
  • ftp> help
$ ftp
ftp> help

접속은 ftp 모드에서 open 명령을 사용하는 법과

  • $ ftp
  • ftp> open 192.168.0.110
$ ftp
ftp> open 192.168.0.110 

ftp 명령어 뒤에 직접 ip나 호스트명을 써서  접속하는 법이 있습니다.

  • ftp 192.168.0.110
ftp 192.168.0.110

ftp 모드에서 자주 사용하는 명령어를 정리해 보면 아래와 같습니다.
A라는 컴퓨터에서 B(192.168.0.111)라는 컴퓨터에 ftp 접속하여 파일을 보내고 받는 스토리를 가정해 보겠습니다.

  • $ cd ~/Downloads ## A 컴퓨터에서 홈디렉토리 아래 Downloads 디렉토리로 이동합니다.
  • $ ftp 192.168.0.111 ## A에서 B로 ftp접속 합니다.
  • $ password: ## 아이디/암호 치시면 기본적으로 B 컴퓨터의 아이디의 홈디렉토리로 이동합니다.
  • ftp> cd /temp ## B 컴퓨터의 /temp 디렉토리로 이동합니다.
  • ftp> bin ## 전송 모드를 binary로 설정합니다. ascii 모드 보다 안정적입니다.
  • ftp> ls ## B 컴퓨터 /temp 디렉토리 파일들을 리스트 합니다.
  • ftp> get testB.txt ## B 컴퓨터 /temp 디렉토리의 testB.txt 파일을 A 컴퓨터 ~/Downloads 디렉토리로 가져옵니다.
  • ftp> put testA.txt ## A 컴퓨터 ~/Downloads 디렉토리의 testA.txt 파일을 B 컴퓨터 /temp 디렉토리로 보냅니다.
  • ftp> mget *.mp3 ## B 컴퓨터 /temp 디렉토리의 mp3 파일 모두를 A 컴퓨터 ~/Downloads 디렉토리로 가져옵니다.
  • ftp> mput *.mp4 ## A 컴퓨터 ~/Downloads 디렉토리의 mp4 파일 모두를 B 컴퓨터 /temp 디렉토리로 보냅니다.
  • ftp> prompt ## mget이나 mput 명령어 사용시 파일 각각에 대해 전송여부 yes/no를 묻는게 불편할 때 사용합니다.
  • ## 토글링 명령어라 온/오프 식으로 동작합니다.
  • ftp> passive ## 패시브 모드를 온 시킵니다.
  • ftp> exit ## 빠져 나옵니다. quit를 사용하셔도 됩니다.
$ cd ~/Downloads ## A 컴퓨터에서 홈디렉토리 아래 Downloads 디렉토리로 이동합니다.
$ ftp 192.168.0.111 ## A에서 B로 ftp접속 합니다. 
$ password: ## 아이디/암호 치시면 기본적으로 B 컴퓨터의 아이디의 홈디렉토리로 이동합니다.
ftp> cd /temp ## B 컴퓨터의 /temp 디렉토리로 이동합니다.
ftp> bin ## 전송 모드를 binary로 설정합니다. ascii 모드 보다 안정적입니다.
ftp> ls ## B 컴퓨터 /temp 디렉토리 파일들을 리스트 합니다.
ftp> get testB.txt ## B 컴퓨터 /temp 디렉토리의 testB.txt 파일을 A 컴퓨터 ~/Downloads 디렉토리로 가져옵니다.
ftp> put testA.txt ## A 컴퓨터 ~/Downloads 디렉토리의 testA.txt 파일을 B 컴퓨터 /temp 디렉토리로 보냅니다.
ftp> mget *.mp3 ## B 컴퓨터 /temp 디렉토리의 mp3 파일 모두를 A 컴퓨터 ~/Downloads 디렉토리로 가져옵니다.
ftp> mput *.mp4 ## A 컴퓨터 ~/Downloads 디렉토리의 mp4 파일 모두를 B 컴퓨터 /temp 디렉토리로 보냅니다.
ftp> prompt ## mget이나 mput 명령어 사용시 파일 각각에 대해 전송여부 yes/no를 묻는게 불편할 때 사용합니다.
## 토글링 명령어라 온/오프 식으로 동작합니다.
ftp> passive ## 패시브 모드를 온 시킵니다.
ftp> exit ## 빠져 나옵니다. quit를 사용하셔도 됩니다.

홈디렉토리 밖으로도 접근하게 하려면 /etc/vsftpd.conf 파일에서

chroot_local_user=YES

라인을 찾아서 # 코멘트를 제거해 주세요.

혹 ftp를 이용하여 일괄 백업이나, 자동 파일 배포등의 스크립트 파일을 만들어 사용하시고픈 경우는
-ni 옵션과 input 리다이렉트 < 를 이용하시면 좋습니다.
간단히 억지 예를 들어 설명드리면  test.sh란 파일을  자주 특정 컴퓨터에 보내야 하는 상황이 있다면,
그 때 마다  명령어를 일일이 치는 것은 비효율적일 겁니다.
ftp모드에서 사용하는 명령어들 즉 아래내용을 그대로 파일로 저장하고, 파일명은 임의로 ftpTransfer라고 하면 

  • open 192.168.0.111
  • user 유저명 암호
  • bin
  • put test.sh
  • bye
open 192.168.0.111
user 유저명 암호
bin
put test.sh
bye

아래 코드 처럼 입력하면 네트워크 자체에 문제가 없다면 파일 안의 내용이 자동으로 실행되어 파일이 전송됩니다.
crontab을 이용하시면 특정 시간에 실행되는 스크립트를 만들수 있고,
필요한 상황을 잘 분석하시면 스크립트를 이용해서 좋은 자동 전송명령어를 만드실 수 있을겁니다.

  • ftp -ni < ./ftpTransfer
ftp -ni < ./ftpTransfer 

보안문제가 걱정되신다면  외부 네트워크에 접속하는 경우에는 sftp(secure ftp) 사용을 권장드립니다.

이 글이 누군가에겐 조금이나마 도움이 되었으면 하는 작은 바램입니다.

출처:http://html5around.com/wordpress/tutorials/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90-ftp-%EC%84%9C%EB%B2%84server-%EC%84%A4%EC%B9%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/