일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- docker-compose
- MariaDB
- 8443
- CentOS
- 인증서
- haproxy
- Cent
- db
- Maria
- YouTube
- vsftpd
- SSL
- letsencrypt
- firewall
- mount
- Tomcat
- ubuntu
- docker
- phpmyadmin
- 방화벽
- iptables
- HLS
- centos7
- mysql
- https
- nginx
- haproxy.cfg
- youtube-dl
- yum
- 도커
- Today
- Total
개발자의뇌
sftp 설치 및 설정 본문
# SFTP 설치
# SSH 서버 설치되어 있으면 별도의 설치 필요 없음
# !! 주의사항
# 디렉토리 소유권 및 rwx 권한 설정이 맞지 않는 경우
# sftp 접속이 안되거나 접속되더라도 업로드가 안되는 문제가 계속 나옴
# 자신이 리눅스 소유권 및 권한 설정의 개념이 부족하다고 생각하면
# 어느정도 삽질하다가 해결이 안되면
# 새로운 계정을 생성하고 다시 차근차근 순서대로 실행할 것을 추천함!
# SFTP 설정(우분투 18.04)
# 시나리오
1. devuser 계정과 패스워드 입력으로 sftp 에 접속한다.
2. upload 디렉토리에 파일을 업로드 한다.
3. ssh 접속은 하지 못하도록 한다.
4. 루트(/) 디렉토리 이외에 접근하지 못하도록 한다.
# (1) 조건 devuser 계정을 생성한다.
# (3) 조건을 위해 nologin 으로 생성한다.
useradd -s /usr/sbin/nologin devuser
# (1) 조건 패스워드를 설정한다.
passwd devuser
# 계정 생성 확인한다.
cat /etc/passwd
devuser:x:1002:1002::/home/devuser:/usr/sbin/nologin
# 그룹 생성 확인한다.
cat /etc/group
devuser:x:1002:
# ssh 설정에서 sftp 활성화 설정을 한다.
# sftp 설정은 제일 마지막줄에 추가한다.(필수!)
# (4) 조건을 위해 ChrootDirectory 설정
vi /etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server
# Match Group 등을 사용할 수 있다.(검색추천!)
Match User devuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /contents/devuser
# 아래와 같이 경로와 권한 설정을 한다.
# (2) 조건을 위해 upload 생성
# /contents/devuser 가 Chroot 이므로 파일 업로드 불가(sftp 규칙)
# 하위에 upload 디렉토리가 있어야 파일 업로드 가능
/contents /devuser /upload
root:root root:devuser devuser:devuser
drwxr-xr-x drwxr-x--- drwxrwxr-x
755 750 775
# 디렉토리 소유권 및 권한 설정
# sftp 는 Chroot 까지 기본적으로 root 가 소유자야여 한다.
# root 소유가 아닐 경우 sftp 연결 시 broken pipe 에러 발생함
# 그럼 sftp 계정은 group 권한 설정에 맞춰서 접속하므로
# 계정의 그룹이 접근할 디렉토리에 포함되어 있는지 확인 필요
# 그룹 권한이 맞지 않으면 sftp 접속 후 명령을 치면 permission 에러 발생함
# /etc/passwd 의 ID와 /etc/group ID가 디렉토리 설정과 일치하는지 확인
# /contents 설정
# 소유자 root, 그룹 root
# 소유자 rwx, 그룹 r-x, 일반 r-x
chown root:root /contents
chmod 755 /contents
# /contents/devuser 설정
# 소유자 root, 그룹 devuser
# 소유자 rwx, 그룹 r-x, 일반 ---
chown root:devuser /contents/devuser
chmod 750 /contents/devuser
# /contents/devuser/upload 설정
# 소유자 devuser, 그룹 devuser
# 소유자 rwx, 그룹 r-x, 일반 r-x
chown devuser:devuser /contents/devuser/upload
chmod 755 /contents/devuser/upload
# 이렇게 설정을 마치고 ssh 재시작
systemctl restart ssh
# 파일질라 클라이언트나 sftp 명령으로 접속 테스트
sftp -P포트번호 devuser@서버IP
# ID, Pass 입력 후 upload 디렉토리로 이동하여 업로드
'개발 > Linux' 카테고리의 다른 글
Synology 4 Bay NAS 고장시 우분투로 데이터 복구 (0) | 2022.10.20 |
---|---|
CentOS 시스템 시간 TimeZone 변경 (0) | 2022.10.20 |
node 사용하여 ip to location 서버 만들기 (0) | 2021.04.12 |
nginx permission denied error 발생 (0) | 2020.08.04 |
curl http response time check (0) | 2020.07.27 |