티스토리 뷰


Ubuntu 에서 SFTP 사용시 로그인 사용자를 해당 폴더에 가두는 방법입니다. ( SSH 를 사용하기 때문에 vsftpd  는 필요 없습니다. )


0. 조건


- 우선 SSH 가 깔려 있다는 것을 전제로 합니다.

- 사용자 그룹 sftponly 에 등록된 사용자들을 sftp 폴더에 가두게 될 것입니다.


* 주의 : SSH 사용자를 sftponly 그룹에 등록하지 마시기 바랍니다. sftponly 에 등록된 사용자는 ssh 에 로그인이 되지 않게 될 것입니다.


1. SSH config 변경하기


우선 /etc/ssh/sshd_config 를 수정합니다.


$ vim /etc/ssh/sshd_config


그리고 문서의 최하단으로 내리셔서 아래와 같이 internal-sftp 을 추가하고 Match Group 를 추가 하도록 합니다.


변경 전
Subsystem sftp /usr/lib/openssh/sftp-server

변경 후
Subsystem sftp internal-sftp /usr/lib/openssh/sftp-server

최하단에 아래의 문구 추가

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no



이제 모두 완료 되었다면 저장 후 닫아 주시고 ssh 를 재시작 해 주도록 합니다.


$ service sshd restart


2. 사용자 추가 및 설정


아래의 명령어로 sftponly 를 추가하고 환경을 설정해 주도록 합니다.


groupadd sftponly

useradd tutorial_sftp
passwd

*비밀번호 입력과정 진행

usermod tutorial_sftp -g sftponly
usermod tutorial_sftp -s /bin/false
usermod tutorial_sftp -d /data/server


각 명령어 별로 설명을 드리면




groupadd sftponly

- 그룹을 추가 합니다.


useradd tutorial_sftp

- tutorial_sftp 라는 사용자를 추가합니다/


passwd

- 이전에 등록한 사용자의 비밀번호를 설정합니다.


usermod tutorial_sftp -g sftponly

- tutorial_sftp 을 sftponly 그룹에 등록합니다.


usermod tutorial_sftp -s /bin/false

- tutorial_sftp 의 설정을 /bin/false 로 변경합니다. 효과는 쉘 권한을 없에며 쉘 로그인이 불가능 해집니다. 


* sftponly 에 등록이 되어 있어도 /bin/bash 면 쉘 로그인은 가능합니다. 만약 실수로 쉘 유저를 sftponly 에 등록하는 바람에 로그인이 안된다면 이 부분을 /bin/bash 로 수정하시면 됩니다. ( 혹은 /etc/passwd 를 직접 수정 )


usermod tutorial_sftp -d /data/server

- tutorial_sftp 의 홈 디렉토리를 설정합니다. 


* 주의 하셔야 할 부분입니다. sftp 의 홈 디렉토리는 root 권한으로 설정 되어 있어야 합니다. 만약 다르다면 Command failed. 라는 메시지를 보게 될 것 입니다.


이제 sftp 에 로그인 해보시면 정상적으로 작동 하는 모습을 확인 하실 수 있으실 것 입니다.





공유하기 링크
댓글