IT & CODE 이야기

Ubuntu에 sftp 설정하기 본문

CODE/Server

Ubuntu에 sftp 설정하기

Karoid 2018. 6. 20. 17:51

ftp로 정보를 주고받아야 하는 상황이 생겨서 웹사이트를 올린 서버에 ftp를 열어놔야 하는 상황이 생겼다. 아래 글은 Ubuntu 16.04LTS를 기준으로 작성되었다

설치하기

우선 openssh-server라는 프로그램이 설치되어 있어야 한다.

$ sudo apt-get install openssh-server

나의 환경에서는 이미 설치가 되어있었다. 이 상태에서 이제 내가 원하는 계정을 생성해보자. (이미 있다면 계정 생성은 패스해도 된다.)

계정 생성하기

$ sudo adduser guest

Ubuntu에 계정을 생성 및 비밀번호를 설정하고, 이 계정이 특정 폴더 외의 다른 폴더는 접근하지 못하도록 막아보겠다.

sftp 설정 바꾸기

$ vi /etc/ssh/sshd_config

그리고 다음 부분을

Subsystem sftp /usr/lib/openssh/sftp-server

다음과 같이 바꾼다

Subsystem sftp internal-sftp

그리고 파일의 마지막 부분에 다음 코드를 넣는다

Match Group filetransfer
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

그리고 ssh 데몬을 재시작한다

$ service ssh restart

계정에 대한 권한 설정하기

제한을 걸 유저를 포함시킬 그룹을 생성한다

$ sudo addgroup --system filetransfer

그리고 그 그룹안에 넣자

usermod -G filetransfer guest
chown root:root /home/guest
chmod 755 /home/guest

여기서 guest부분을 당신이 정한 유저명으로 바꾸면 된다.
이제 생성한 폴더(request)에 대해 이 계정이 쓰기 권한을 갖게 해보자!

cd /home/guest
mkdir request respond
chown guest:filetransfer request

이렇게 하면 /, /respond 두 폴더는 쓰기권한이 없고 보기권한만 있는 상태가 되고 /request 폴더에 쓰기 권한이 주어진다. 아래 코드 부분이 filetranfer 그룹에 권하는 주는 부분이기 때문에 꼭 이해하자

chown guest:filetransfer request


Comments