AWS EC2 서버로 FTP 연결하기 (Sublime Text 2)

AWS EC2 서버에 FTP를 연결하여
Sublime Text 2를 이용해 직접 소스를 작업하고 개발하기 위한
환경을 구축한다.

이를 위해서는 다음과 같은 작업이 필요하다.

  1. AWS EC2 서버에 vsftpd 설치
  2. AWS Security Groups 설정
  3. FTP용 계정을 생성하고 권한 부여
  4. Sublime Text 2 에 SFTP 플러그인 설치
  5. Sublime Text 2 의 FTP 연결 정보 설정

이와 같이 설정이 모두 끝나면,
‘Browser Server’ 메뉴를 통해 파일을 생성하거나 선택하여 수정할 수 있다.
변경된 내용은 마우스 오른쪽 버튼을 클릭하여 ‘Upload File’ 메뉴로 전송한다.

설치과정을 하나씩 설명하겠다.

* 참고
http://stackoverflow.com/questions/7052875/setting-up-ftp-on-amazon-cloud-server

1. AWS EC2 서버에 vsftpd 설치

// AWS EC2 서버에 vsftpd 모듈을 설치
$ sudo yum install vsftpd

// vsftpd 설정
$ sudo vi /etc/vsftpd/vsftpd.conf

...
// vsftpd.conf 파일 끝에 다음을 추가 (PASSIVE 모드)
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<서버의 공개IP>

// 변경된 설정으로 vsftpd 서비스 재시작
$ sudo service vsftpd restart

...

// 다른 PC에서 해당 서버로의 FTP 접속을 테스트 한다.
// (* Anonymouse 접속이 허용되는 상태임: anonymous_enable=YES

2. AWS Security Groups 설정

AWS의 Security Groups를 생성하고 Inbound에 다음을 설정하여 서버에 적용한다.

3. FTP용 계정을 생성하고 권한 부여

서버에 FTP용 계정을 따로 생성하고 권한을 부여하는 것이 보안에 좋다.

$ sudo adduser <계정>
$ sudo passwd <계정>
==> <암호> 입력

// 웹개발을 위해 /var/www 디렉토리에 대한 권한 부여
$ sudo usermod -d /var/www/ <계정>
$ sudo usermod -a -G www <계정>

// vsftpd에 임의계정의 로그인을 금지하고, 서버의 로컬 계정기반 접속을 허용한다
$ sudo vi /etc/vsftpd/vsftpd.conf

...
anonymous_enable=NO
chroot_local_user=YES

// 변경된 설정으로 vsftpd 서비스 재시작
$ sudo service vsftpd restart

...

// 설정한 <계정>으로 ftp 접속을 테스트한다.

4. Sublime Text 2 에 SFTP 플러그인 설치
* 주의: SFTP 플러그인은 무료가 아니다. 자꾸 돈내라고 Alert 뜬다.
* 참고 http://blog.readiz.com/46#.VguF13XtlBc

Sublime Text 2의 메뉴에서 ‘View > Show Console’를 클릭
하단의 텍스트 입력창에 아래 박스의 내용을 복사해 넣고 Enter!

import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'

이후 Preference 메뉴의 Package 설치를 통해 ‘SFTP’ 플러그인을 선택하여 설치한다.
설치가 완료되만 File 메뉴에 SFTP/FTP 항목이 보일 것이다.

5. Sublime Text 2 의 FTP 연결 정보 설정

Sublime Text 2의 메뉴에서 ‘File > SFTP/FTP > Setup Server’를 클릭
(* 이후 수정을 위해서는 Edit Server 를 선택하면 된다)

{
    // The tab key will cycle through the settings when first created
    // Visit http://wbond.net/sublime_packages/sftp/settings for help
    
    // sftp, ftp or ftps
    "type": "ftp",

    "save_before_upload": true,
    "upload_on_save": true,
    "sync_down_on_open": true,
    "sync_skip_deletes": true,
    "sync_same_age": true,
    "confirm_downloads": false,
    "confirm_sync": true,
    "confirm_overwrite_newer": false,
    
    "host": "search.jeju.onl",
    "user": "<계정>",
    "password": "<암호>",
    //"port": "22",
    
    "remote_path": "<리모트 서버의 시작 위치>",
    //"file_permissions": "664",
    //"dir_permissions": "775",
    
    //"extra_list_connections": 0,

    "connect_timeout": 30,
    //"keepalive": 120,
    //"ftp_passive_mode": true,
    //"ftp_obey_passive_host": false,
    //"ssh_key_file": "~/.ssh/id_rsa",
    //"sftp_flags": ["-F", "/path/to/ssh_config"],
    
    //"preserve_modification_times": false,
    //"remote_time_offset_in_hours": 0,
    //"remote_encoding": "utf-8",
    //"remote_locale": "C",
    //"allow_config_upload": false,
}

설정 파일은 ‘<서버명>.json’라는 이름으로 저장하면 된다.
* 참고 http://wbond.net/sublime_packages/sftp/settings#Remote_Server_Settings

즐개발~!

  1. 안녕하세요, 초보 개발자입니다. 정리해주신 내용 잘 보았습니다.
    저는 AWS 우분투 서버를 사용중인데요, 위와 같이 설정을 한 뒤에 파일질라로 접속이 안되네요..
    (저도 링크 걸어 놓으신 stackoverflow 의 원문을 읽어보았습니다)

    AWS EC2의 security group 에서 20-21번 포트 anywhere로 열어놓았습니다.
    vsFTPd.conf의 로 인스턴스의 엘라스틱 IP를 넣었습니다.

    파일질라 접속시)
    -파일질라의 호스트:
    -Username:
    -password:
    -port: 21

    이렇게 설정하고 접속을 시도하면 “ECONNREFUSED – Connection refused by server” 라고 에러 메세지가 뜨는데요, 무엇이 잘못되었는지 혹시 알수 있을까요? anonymous_enable= YES 로 하든 NO 로 하든 결과는 똑같습니다.

    *추신
    $ sudo usermod -a -G www 을 수행하면, group ‘www’가 존재하지 않는다고 메세지가 나오는데요, www그룹을 따로 생성해야 하는건지, 아니면 우분투에선 다르게 적용해야 하는건지도 잘 모르겠네요

    Liked by 1명

    응답

    1. vsftp 프로세서가 떴나요?
      ps -ef | grep vsftp

      1.떳다면 권한 문제일 수 있습니다.
      remote path를 계정의 홈패스로 설정해 보세요.

      2.www 그룹은 생성해야 합니다. 본문 스크립트 중에 있습니다.

      좋아하기

  2. 답변 감사드립니다.
    ps -ef | grep vsftp 명령을 넣으면
    ubuntu 2394 1351 0 10:02 pts/0 00:00:00 grep –color=auto vsftp

    이렇게 뜨고요,
    파일질라에서 remote path를 /home/username 으로 해보아도 결과는 같습니다.

    $ cat /etc/passwd 를 해보면 많은 리스트가 뜨는 가운데,
    우분투는 ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash 이런 반면
    새로 생성한 유저는 username:x:1001:1001:,,,:/var/www/:/bin/bash 이렇습니다. 이게 어떤 영향이 있을까요?

    참고로 AWS key file을 사용하고 username: ubuntu 로 ssh 접속은 잘 됩니다.
    다만 제가 워드프레스를 설치하는데 다른 사람에게 키파일 없이 패스워드로 파일질라를 통해 /var/www/html에 접속할 수 있도록 하고 싶거든요.

    구글링 해보면 다른 사람들은 다들 별 무리 없이 접속이 되는것 같은데 전 왜 이렇게 안되는지 모르겠네요 ㅠ 그나마 찾은 문서들이 다들 외국인들이었는데, 오늘 이렇게 토니아빠님의 글을 찾아서 여쭤봅니다..

    (본문 스크립트 중에 www 그룹 생성이 있다고 하신건,
    $ sudo usermod -d /var/www/ “계정” => 이 명령을 말씀하시는건가요?)

    좋아하기

    응답

    1. 프로세서가 안뜬거 같네요.
      $ ps -ef | grep vsftp
      root 6557 1 0 Jun21 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
      ec2-user 31645 31621 0 11:22 pts/0 00:00:00 grep –color=auto vsftp

      이렇게 나와야 합니다.
      프로세스 관리와 init.d에 등록시키는 방법과 사용자 그룹 관리 등을 찾아보세요.

      좋아하기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: