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에 로그인해보시면 정상적으로 작동하는 모습을 확인하실 수 있으실 것입니다.
'Tips - etc > Ubuntu' 카테고리의 다른 글
Ubuntu 에 MariaDB 설치하기 (0) | 2020.10.04 |
---|---|
Ubuntu 18.04 에 ffmpeg 4.x 설치 방법 (0) | 2020.05.25 |
Ubuntu 서버 에서 CPU 코어 수 확인하기 (0) | 2020.05.24 |
Ubuntu 에서 apt-get 을 이용하여 특정 패키지만 업그레이드 (0) | 2020.05.24 |
Ubuntu 서버 방화벽 ufw 에 특정 ip 및 포트 범위 지정하기 (0) | 2020.05.24 |