Lightsail FTP 서버 구동, vsftpd + filezilla SFTP 연결 아니고 Keyfile 없이 접속

라이트세일로 구성하면 파일질라와 같은 FTP 툴로 접속할 수 있도록 키를 제공하고 그 키를 넣어 SFTP로 접속이 가능한게 일반적이다. 접속 계정은 bitnami 로 기본 설정된 계정이다.

하지만 서비스를 운영하다보면 여러 서버를 운영하게 될 수도 있고 그러다보면 사용자 계정별로 FTP를 따로 구성해서 접속하여 관리할 수 있도록 해주어야 한다.

그렇기 때문에 ftp 서버 역할을 하는 vsftpd를 작동시키고 접속할 수 있도록 계정을 생성해준다.

AWS에서 어느정도 가이드는 제공해주고 있다. https://repost.aws/ko/knowledge-center/lightsail-set-up-ftp
이 정보를 바탕으로 작업해도 잘되는 경우도 있지만 나 같은 경우는 조금 수정이 필요했다.

1. vsftp 설치

sudo apt install vsftpd -y

2. vsftp 설정

listen=YES
listen_ipv6=NO

#익명접속 여부
anonymous_enable=NO

#사용자 별도 계정 접속 여부
local_enable=YES

#업로드 허용
write_enable=YES

#파일 폴더 생성시 권한 설정
local_umask=022

#원격 접속시 사용자 메시지 활성화
dirmessage_enable=YES

use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO

#사용자 목록 활성화
chroot_list_enable=YES

#사용자 목록 경로
#없으면 나오는 오류 : 500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list
chroot_list_file=/etc/vsftpd.chroot_list

#사용자 목록 계정의 업로드 허용
#없으면 나오는 오류 : 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
allow_writeable_chroot=YES


secure_chroot_dir=/var/run/vsftpd/empty

#vsftpd로 되어 있으면 ftp로 변경해줘야함.
#안바꾸면 생기는 오류 : 530 Login incorrect.
pam_service_name=ftp

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

#ftp 접속 포트를 설정해준다.
listen_port=10021

#패시브모드 사용 여부
#NO 로 하면 나오는 오류 : 550 permission denied
pasv_enable=YES

#패시브용 포트범위
#범위 너무 작으면 나오는 오류 : 500 OOPS: priv_sock_get_int
pasv_min_port=21000
pasv_max_port=21999
pasv_addr_resolve=NO

#공유기 거쳐나오는 경우 문제가 된다고 해서 자기 아이피 넣으라고 했는데
#안 넣어도 잘 되고 있어서 주석으로 처리했다.
#pasv_address=127.0.0.1

#디렉토리 목록 조회 실패 대응
#없으면 나오는 오류 : 서버에서 비 ASCII 문자를 지원하지 않습니다.
utf8_filesystem=YES

위에 설정값들은 나의 개인적인 작업 환경에 맞춘 것이다.
예를 들어 나는 사무실에서 공유기를 쓰기 때문에 공유기로부터 부여받은 사설 IP로 노트북이 설정 되어 있어서 서버가 이 부분까지 지원하려면 서버에 패시브 모드를 설정해야만 하는 것도 포함되어 있다.

위 주석으로 된 내용들을 보면 알겠지만 수 많은 오류와 시도 끝에 정리한 설정 문서이다.

3. 서버 전체 폴더를 사용자 계정에 모두 오픈하면 안되니까 개별 추가된 계정은 상위 폴더 안보이는 아이디로 추가한다.

sudo vi /etc/vsftpd.chroot_list

새로운 빈 문서가 나타날 것이고 상단에 최상위 폴더 안보이게 할 계정을 입력해둔다.

물론 계정을 만들고 나서 문서를 만들거나 수정해도 된다.

4. 사용자 계정 생성

sudo useradd -m ftp_user1

5. 비밀번호 생성

sudo passwd ftp_user1

6. ftp 폴더 소유권 변경

sudo chown ftp_user1:ftp_user1 -R /opt/bitnami/apps/naminsikwww/

7. 만든 사용자 계정을 ftp 접속자 목록에 추가한다.

sudo echo "ftp_user1" | sudo tee -a /etc/vsftpd.userlist

8. 만약 홈 폴더를 따로 지정해주고 싶다면 아래와 같이 설정한다.

sudo usermod -d /opt/bitnami/apps/naminsikwww ftp_user1

이렇게 하면 ftp_user1 으로 로그인할 경우 보여지는 홈 폴더는 서버 경로상 /opt/bitnami/apps/naminsikwww 의 폴더이다.

9. vsftpd 를 재시작한다.

sudo systemctl restart vsftpd

10. 라이트세일 - 인스턴스 - 관리 - 네트워킹으로 가서 방화벽을 추가해준다.

11. 파일질라로 접속한다.


정상적으로 연결이 되면 아래처럼 나온다.

Subscribe
Notify of
guest

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

0 댓글
Inline Feedbacks
View all comments
TOP