Lightsail 인스턴스에 SFTP 사용자를 생성하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Lightsail 인스턴스에 SFTP 사용자를 생성하고 싶습니다.

해결 방법

**참고:**다음은 SSH 액세스 권한 없이 chroot 환경(chroot jail)에 액세스할 수 있는 SFTP 사용자를 생성하는 단계입니다. SFTP 사용자는 chroot 환경 또는 디렉터리 외부의 디렉터리에 액세스할 수 없습니다. 이 사용자의 경우 chroot 디렉터리가 루트 디렉터리입니다.

SFTP 그룹 및 사용자 설정

  1. 다음 명령을 사용해 SFTP 사용자 그룹을 생성합니다.

    sudo groupadd sftp_group

    참고:****sftp_group을 내 그룹 이름으로 바꾸세요.

  2. SSH 로그인 셸에 액세스할 수 없고 홈 디렉터리가 있는 인스턴스에 사용자를 생성하세요. 이 작업을 실행하려면 다음 명령을 실행하세요.

    sudo useradd -g sftp_group -m -d  /home/sftp_user -s /sbin/nologin sftp_user

    참고:****sftp_user을 사용자 이름으로 바꾸세요.

암호 인증 또는 SSH 키 기반 인증을 사용해 사용자 인증 설정

비밀번호 인증

다음 명령을 사용해 암호를 생성합니다.

sudo passwd sftp_user

SSH 키 기반 인증

  1. SSH 키 기반 인증을 요구하려면 사용자의 홈 디렉터리에 .ssh 폴더를 생성하세요. 그리고 authorized_keys 파일을 생성하세요.

    sudo mkdir /home/sftp_user/.ssh
    sudo touch /home/sftp_user/.ssh/authorized_keys
  2. 사용하려는 SSH 공개 키를 ** /home/sftp_user/.ssh/authorized_keys** 파일에 추가하세요. 자세한 내용은 ](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-how-to-set-up-ssh)Lightsail용 SSH 키[ 설정을 참고하세요.

  3. 사용자의 홈 디렉터리 소유권과 권한을 변경하려면 다음 명령을 실행합니다.

    sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -Rsudo chown root:sftp_group /home/sftp_user/
    sudo chmod 755 /home/sftp_user/
    sudo chmod 700 /home/sftp_user/.ssh/
    sudo chmod 600 /home/sftp_user/.ssh/authorized_keys

    참고: 위의 예에서는 /home/sftp_user 디렉터리에서 권한 755를 사용하고 소유권을 루트 사용자로 변경합니다. 이 사용자 디렉토리는 chroot 디렉토리로 사용됩니다.

/etc/ssh/sshd_config 파일을 편집합니다.

  1. 하위 시스템 sftp 줄에서 Subsystem sftp /usr/libexec/openssh/sftp-server 줄을 주석 처리하세요.

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. 이전 줄을 다음 텍스트로 변경하세요.

    Subsystem sftp internal-sftp
  3. SFTP 사용자 액세스를 제한하려면 파일 끝에 다음 텍스트를 추가하세요.

    Match Group sftp_group
    ChrootDirectory /home/%u
    ForceCommand internal-sftp

    위 예제에서 ChrootDirectory는 SFTP 사용자의 루트 디렉터리를 지정합니다. MatchGroup/home/%u 경로를 루트 디렉터리로 사용하는 sftp_group의 사용자를 식별합니다. 문자 %u는 사용자를 나타냅니다. ForceCommand internal-sftp는 SFTP 서버를 강제로 사용합니다.

  4. 암호 인증을 사용하는 경우 /etc/ssh/sshd_config 파일의 PasswordAuthenticationyes로 설정하세요.

사용자용 chroot 디렉터리 생성

  1. chroot 디렉터리를 생성하려면 다음을 실행하세요.
    sudo mkdir /home/sftp_user/uploads
    참고: 디렉터리 이름, sftp_user, 업로드를 디렉터리 이름으로 바꾸세요.
  2. 파일 소유권 수정:
    sudo chown sftp_user:sftp_group /home/sftp_user/uploads
    참고: 디렉터리 이름, sftp_user, 업로드를 디렉터리 이름으로 바꾸세요.

변경 사항을 확인하고 SSHD 서비스 다시 시작

  1. 디렉터리 권한이 다음 예와 비슷하게 나타나는지 확인합니다.

    ls -ld /homedrwxr-xr-x 3 root root 23 Oct  6 15:17 /home
    
    ls -ld /home/sftp_user
    drwxr-xr-x 3 root sftp_group 21 Oct  6 15:17 /home/sftp_user
    
    ls -ld /home/sftp_user/uploads/
    drwxr-xr-x 2 sftp_user sftp_group 6 Oct  6 15:17 /home/sftp_user/uploads/
  2. SSHD 서비스를 다시 시작합니다.

    sudo systemctl restart sshd

SSH를 사용해 인스턴스에 연결

비밀번호 인증

다음을 실행합니다.

# sftp sftp_user@example.com's password:

SSH 키 기반 인증

다음을 실행합니다.

# sftp -i key.pem sftp_user@example.com
AWS 공식
AWS 공식업데이트됨 일 년 전