"SFTP만 되는 계정 생성"의 두 판 사이의 차이

잔글 (로봇: 자동으로 텍스트 교체 (-[root@jmnote +[root@zetawiki))
(chroot 설정과 sftp만 되는 계정의 패스워드 변경에 대해 작성)
44번째 줄: 44번째 줄:
</source>
</source>
아래와 같이 내용을 교체...
아래와 같이 내용을 교체...
<source lang='bash'>
 
#Subsystem sftp /usr/libexec/openssh/sftp-server
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Subsystem sftp internal-sftp
==chroot 적용==
특정 경로를 root로 정하고 그 디렉토리 밖으로 못 나가는 chroot 설정이 가능하다.
<source lang='bash'>
Subsystem sftp internal-sftp
Match Group sftpgrp
        ChrootDirectory /sftp_home/%u
        ForceCommand internal-sftp
</source>
</source>
위와 같이 설정하면 'sftpgrp' 그룹에 속한 유저가 접속할 경우, /sftp_home/사용자명 경로가 / 경로가 된다.
chroot 사용 시 디렉토리 소유자와 퍼미션에 주의해야 한다.
# 소유자는 root 여야 한다
# root 이외의 사용자가 접속 / 경로에 쓰기 권한이 있어선 안된다.
## root 이외 사용자에게 쓰기 권한이 있는 경우, sftp 접속이 안된다.
## /var/log/secure 로그에 fatal: bad ownership or modes for chroot directory "경로" 라고 남음.
# '/' 경로에 쓰기 권한이 없으니 접속하는 사용자가 파일 업로드가 불가능하다. 접속자 소유의 upload 디렉토리를 각 '/' 경로 밑에 만들어주면 해결.
==sftp만 되는 계정의 password 변경==
sftp만 되는 사용자가 직접 패스워드 변경은 불가능하다. root 사용자가 변경해주거나 별도 툴이 있어야 한다.
/etc/passwd 에 접근이 불가능 해서라고...
*http://serverfault.com/questions/275002/openssh-sftp-with-chroot-how-to-change-password
*http://changepassword.sourceforge.net/


==sshd 재시작==
==sshd 재시작==

2015년 11월 9일 (월) 06:51 판

SFTP만 되는 계정 생성
Shell 로그인 권한은 없고 SFTP만 접속할 수 있는 계정 설정하기
nologin 계정에 SFTP를 허용하는 방법

1 계정 생성

명령어
useradd -s /sbin/nologin 계정명
실행예시
[root@zetawiki ~]# useradd -s /sbin/nologin sftpuser
[root@zetawiki ~]#

2 패스워드 지정 & 확인

명령어
echo '패스워드' | passwd --stdin 계정명
ssh 계정명@localhost
실행예시
[root@zetawiki ~]# echo 'P@ssw0rd' | passwd --stdin sftpuser
Changing password for user sftpuser.
passwd: all authentication tokens updated successfully.
[root@zetawiki ~]# ssh sftpuser@localhost
sftpuser@localhost's password:
→ 패스워드 입력
This account is currently not available.
Connection to localhost closed.
→ 패스워드는 맞지만 쉘권한이 없어서 세션이 닫힘.

3 sshd_config 수정

[root@zetawiki ~]# vi /etc/ssh/sshd_config

아래와 같이 내용을 교체...

  1. Subsystem sftp /usr/libexec/openssh/sftp-server

Subsystem sftp internal-sftp


4 chroot 적용

특정 경로를 root로 정하고 그 디렉토리 밖으로 못 나가는 chroot 설정이 가능하다.

Subsystem sftp internal-sftp
Match Group sftpgrp
        ChrootDirectory /sftp_home/%u
        ForceCommand internal-sftp

위와 같이 설정하면 'sftpgrp' 그룹에 속한 유저가 접속할 경우, /sftp_home/사용자명 경로가 / 경로가 된다.

chroot 사용 시 디렉토리 소유자와 퍼미션에 주의해야 한다.

  1. 소유자는 root 여야 한다
  2. root 이외의 사용자가 접속 / 경로에 쓰기 권한이 있어선 안된다.
    1. root 이외 사용자에게 쓰기 권한이 있는 경우, sftp 접속이 안된다.
    2. /var/log/secure 로그에 fatal: bad ownership or modes for chroot directory "경로" 라고 남음.
  3. '/' 경로에 쓰기 권한이 없으니 접속하는 사용자가 파일 업로드가 불가능하다. 접속자 소유의 upload 디렉토리를 각 '/' 경로 밑에 만들어주면 해결.

5 sftp만 되는 계정의 password 변경

sftp만 되는 사용자가 직접 패스워드 변경은 불가능하다. root 사용자가 변경해주거나 별도 툴이 있어야 한다. /etc/passwd 에 접근이 불가능 해서라고...

6 sshd 재시작

[root@zetawiki ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

이제 sftpuser 계정으로 SFTP로 접속하면 된다...

7 같이 보기

8 참고 자료