AWS/Project

EC2에서 SFTP 서버 구축하기 (1) - 로그인 인증 방식(패스워드/키 페어)

jih0ssang 2024. 10. 30. 21:33

프로젝트에서 SFTP 서버의 필요성이 제기되어 EC2에 SFTP 서버를 구축하고자 한다.

SFTP 서버를 생성하여 별도의 SFTP 소프트웨어 설치 없이 SSH를 이용해 SFTP를 구성할 것이다.

 

특정 지역 센터에서는 키 페어 방식으로 붙고, 특정 사용자들에게는 패스워드 방식으로 로그인 인증을 진행하려고 한다.

1. EC2 인스턴스 생성 및 SSH 설정

2. 보안그룹 설정

SFTP는 기본적으로 22번 포트를 사용하므로, 보안 그룹에서 포트 22에 대한 인바운드 규칙을 허용해준다.

3. 인증 방식 설정

로그인 패스워드 인증 방식

  • SFTP 사용자 계정 생성
    $ sudo user add sftpuser
    $ sudo passed sftpuser

 

키 페어 인증 방식

  • 클라이언트 측에서 공개 키 생성하고 SFTP 서버에 등록한다.
    $ ssh-keygen -t rsa -b 2048
    위의 명령어로 생성된 키 파일 중 id_rsa.pub이 공개 키이다.
  • SFTP 서버의 authorized_keys 파일에 클라이언트에서 생성한 공개 키(id_rsa.pub)를 추가한다.
$ sudo mkdir -p /home/sftpuser/.ssh
$ sudo touch /home/sftpuser/.ssh/authorized_keys
$ sudo chmod 700 /home/sftpuser/.ssh
$ sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
$ echo "클라이언트 공개 키 내용" | sudo tee -a /home/sftpuser/.ssh/authorized_keys


4. 디렉터리 소유자 설정

$ sudo chown -R sftpuser:sftpuser /home/sftpuser/.ssh


5. SSH 서비스 재시작

SSH 서비스를 재시작합니다.
$ sudo systemctl restart sshd


6. SFTP 전용 디렉터리 생성

기본적으로 홈 디렉터리에 대한 접근 권한을 제한하고 파일을 전송할 디렉터리를 생성한다.

$ sudo mkdir -p /home/sftpuser/uploads
$ sudo chown root: /home/sftpuser
$ sudo chmod 755 /home/sftpuser
$ sudo chown sftpuser:sftpuser /home/sftpuser/uploads


* chown root:  => 홈 디렉터리에 대한 접근 권한을 제한하기 위해서 소유자를 root로 변경하는 것이다.

 

7. SSH 설정 파일 수정

/etc/ssh/sshd_config 파일을 수정하여, SFTP 전용 설정을 추가한다.
파일 하단에 다음 설정을 추가하여 SFTP 전용 세션을 구성한다.
$ sudo vi /etc/ssh/sshd_config

Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no


ChrootDirectory 설정은 사용자를 특정 디렉토리에만 접근할 수 있도록 제한하며, ForceCommand internal-sftp는 사용자가 SFTP 기능만 사용하게 만듭니다.

 

8. SSH 서비스 재시작

설정 파일을 저장한 후 SSH 서비스를 재시작하여 변경 사항을 적용합니다.

$ sudo systemctl restart sshd

9. 파일 및 디렉터리 권한 설정

디렉터리 및 파일의 권한을 SFTP 사용자 전용으로 설정해준다.

SFTP 클라이언트 연결 확인

최종적으로 SFTP 클라이언트 (ex: FileZilla, WinSCP 등)를 사용하여 sftpuser 계정으로 서버에 접속하여 파일 전송이 가능한지 테스트 한다.