[SFTP 접속만 가능한 계정 만들기]
계정을 만들다보면, 특정 계정은 ssh 접속은 차단하고 sftp 만 가능하게 만들어야 할 때가 있다.
그럴때는 아래와 같이 작업하면 sftp 접속만 가능한 계정을 만들 수 있다.
ssh 환경값을 수정해야 하기 때문에 모든 작업은 root 계정으로 해야 한다.
1단계: sftp 전용 그룹 및 사용자 만들기.
아래 명령을 수행하면 sftpusers 라는 그룹이 만들어지며,
user1 이란 사용자를 ssh 접속하지 못하게 하면서(쉘 설정을 /sbin/nologin 으로)
sftpusers 라는 그룹에 속하도록 사용자를 생성한다.
passwd 명령으로 새로 생성된 user1 사용자의 비밀번호를 설정한다.
1. groupadd sftpusers
2. useradd -G sftpusers -s /sbin/nologin user1
3. passwd user1
2단계: sshd 서비스 환경값 수정.
/etc/ssh/sshd_config 파일을 vi 로 열어
1. vi /etc/ssh/sshd_config
2. Subsystem sftp /usr/libexec/openssh/sftp-server <-- 이 라인을 찾아
3. Subsystem sftp internal-sftp <-- 이걸로 '대체' 한다.
/etc/ssh/sshd_config 파일의 끝으로 이동하여, 아래 구문을 추가한다.
그룹명으로 지정된 sftpusers 는 1단계에서 생성한 그룹이다.
1. Match Group sftpusers
2. X11Forwarding no
3. AllowTcpForwarding no
4. ChrootDirectory %h
5. ForceCommand internal-sftp
:wq 를 눌러 sshd_config 파일을 저장하고 프롬프트로 나간 후, 아래 명령을 수행하여
sshd 서비스를 재시작 한다.
1. systemctl restart sshd.service
3단계: sftp 접속만 가능한 사용자를 위한 전용 디렉토리 생성.
아래 명령어를 수행하여 sftp 접속만 가능한 사용자를 위한 디렉토리를 생성한다.
디렉토리는 굳이 /home/user1 이 아니어도 된다.
나 같은 경우에는 /mnt/storage/sftp 와 같이 용량 큰 하드디스크의 특정 디렉토리를 지정하였다.
1. chown -R root /home/user1
2. chmod -R 755 /home/user1
3. mkdir /home/user1/files
4. chown user1. /home/user1/files
4단계: sftp 만 접속 가능한 사용자 더 만들기.
계정이 더 필요하다면, 아래 명령을 수행하여 sftp 접속만 가능한 사용자를 만들 수 있다.
ssh 접속을 못하기 때문에 .bash_profile 과 같은 환경 파일이 생성되지 않으므로 경로는 3단계와 같은 경로를 써도 상관없다.
1. useradd -G sftpusers -s /sbin/nologin user2
2. passwd user2
3. chown -R root /home/user2
4. chmod -R 755 /home/user2
5. mkdir /home/user2/files
6. chown user2. /home/user2/files
이렇게 작업하면, ssh 접속은 거부되면서 sftp 접속만 가능한 사용자를 만들 수 있다.