참고 : https://aegypius.tistory.com/entry/CentOS-ssh%EC%99%80-sftp-%EC%84%A4%EC%A0%95
sftp는 ftp 와는 다르게 ssh 프로토콜을 이용함
계정 접속 컨트롤은 sshd config 내에
Allowusers // AllowGroups // DenyUsers // DenyGroups 활용이 용이
1. ssh 설정 변경
[vi /etc/sshd/config]
Match User [유저명]
ChrootDirectory /home/[디렉토리명] ## 상위 디렉토리 이동 불가
ForceCommand internal-sftp ## ssh 접속x, sftp 강제
1. Chroot 구문을 생략할 경우 ssh 접속은 불가능하나 sftp 접속 후 모든 상위 디렉토리로 접근이 가능해짐
2. ForceCommand 구문을 생략할 경우, ssh와 sftp 접속 모두 불가능해짐
ex)
Match User [유저명]
ChrootDirectory %h ## %h로 유저명을 따라감
ForceCommand internal-sftp
Port 6666 ## ssh 6666번 선언
Port 5555 ## ssh 포트 추가선언
Match LocalPort 5555
ForceCommand internal-sftp
1. Port 5555의 경우 sftp로만 접속 가능, Port 6666은 ssh와 sftp 모두 사용가능
2. Chroot %h 선언은 /home/[유저명]을 기본적으로 따라감
2. sftp 권한
home directory
1) 소유권이 root 에 있어야 함, 서버 접속 간에 디렉토리가 root가 아닐 경우 접속이 거부됨
2) 그룹 소유권한이 최소 Read 권한이 있어야 디렉토리 접근이 가능함
-> 040의 경우 접근은 가능하나, 내부 파일을 볼 수 없음
-> 050의 경우 접근하여, 다운로드 가능
3) chroot 사용 시
- root 이외의 사용자에게 쓰기 권한이 있는 경우, sftp 접속불가
- 업로드가 필요할 시, 해당 chroot 디렉토리 하위에 있는 디렉토리를 별도로 생성해야 함
ex)
mkdir -p /sftp_home/sftpuser/uploads
chown sftpuser:sftp-only /sftp_home/sftpuser/uploads
drwxr-xr-x root root /sftp_home/sftpuser/
drwxr-xr-x sftpuser sftp-only /sftp_home/sftpuser/uploads
출처 : https://zetawiki.com/wiki/SFTP%EB%A7%8C_%EB%90%98%EB%8A%94_%EA%B3%84%EC%A0%95_%EC%83%9D%EC%84%B1
Error
fatal: bad ownership or modes for chroot directory
-> chroot로 지정된 디렉토리의 소유자가 root 가 아닐 경우, 뜬다고 함
해결 : chown root:[유저명] [디렉토리명]
vi /etc/
#수정 후 Subsystem sftp /usr/lib/openssh/sftp-server -f local5 -l INFO