본문 바로가기
Server

SFTP 설정

by 동기 2024. 2. 1.
반응형

SFTP (SSH File Transfer Protocol)

SFTP란?

네트워크를 통한 파일 전송을 허용하는 SSH 프로토콜의 확장이라고 합니다.

기존의 FTP (File Transfer Protocol) 방식은 보안적인 취약점이 있기때문에 중요한 파일을 전송하기는 위험했습니다.

파일 전송 시 SSH 방식을 사용해서 안전하게 암호화된 구간에서 파일을 전송할 수 있도록 구현한 것이 SFTP 입니다.

SFTP 의 장점

  • SFTP는 하나의 연결만 필요하며 데이터 연결이 필요없습니다.
  • 연결이 안전하게 보호됩니다. (SSH 방식)
  • SFTP는 기계가 읽을 수 있고 균일한 디렉터리 목록을 자랑합니다.
  • 프로토콜에서 제공하는 추가 기능에는 파일 잠금, 특성 조작, 권한 작업 및 향상된 기능이 포함됩니다.

SFTP 의 단점

  • SSH 키의 유효성 검사 및 관리가 복잡합니다.
  • 이 프로토콜은 바이너리 통신에 관여하는데, 이는 사람이 읽을 때 "있는 그대로" 기록할 수 없다는걸 말합니다.
  • SFTP 구성 "표준"은 서로 다른 공급업체의 소프트웨어 타이틀 간 호환성 문제를 야기할 수 많은 SFTP 구성 표준이 있습니다.
  • SFTP는 서버 대 서버 복사 외에 재귀 디렉터리에 대한 제거 작업을 제공하지 않습니다.

SCP vs SFTP

SCPSFTP
기능파일 전송만 허용하는 간단한 프로토콜원격 파일 관리를 위한 광범위한 작업을 제공원격으로 파일 제거, 중단 된 전송 재개 등의 추가기능을 가짐
플랫폼대부분 Unix 플랫폼만 사용함여러 플랫폼에서 사용할 수 있음
속도SFTP 보다 빠르다패킷의 암호화 및 일치를 기다려야 하므로 SCP보다 느림
파일 전송 용량4GB 이상의 파일 전송 불가4GB 이상의 파일도 전송가능 (대용량 전송이 가능)
세션 유지파일 전송 취소시 세션을 취소해야함파일 전송 취소시 세션을 유지할 수 있음
전송 재개 가능전송 재개 불가능전송 재개 가능

SFTP를 위한 SSH설치

SFTP는 SSH 내부에 있는 하나의 기능으로 SSH 포트(22번포트)를 사용합니다.
즉, SSH 안에 SFTP가 들어 있으며 설치가 되어있다면 설정만 하면 됩니다.

만약 SSH가 설치되어 있지 않다면 다음 명령어로 설치합니다.

sudo apt install openssh-server

SFTP 설정

저희는 고대에게 SSH 프로토콜 대신 SFTP 프로토콜만 허용하여 파일을 가져갈 수 있도록 할 것입니다.

SFTP 권한을 얻을 user와 group을 만들기 위한 기초작업을 진행합니다.

  • /data/sftp/ 디렉토리를 생성합니다
sudo mkdir -p /data/sftp

-p : 경로에 디렉터리를 없으면 만들고 있으면 냅둠

  • /data 권한을 701로 설정합니다.
sudo chmod 701 /data

변경 전

변경 후

그룹 및 유저 생성

1.그룹 생성

  • sftpusers 라는 이름의 그룹을 생성합니다
sudo groupadd sftpusers

2.유저 생성

  • 유저를 생성합니다
sudo useradd -g sftpusers -d /upload -s /sbin/nologin hiai

-g : 그룹 sftpusers에 포함시킴

-d : 유저가  /upload 디렉터리에 있도록 설정 (이후 /upload 디렉터리는 /data/hiai/upload에 생성)

-s : 유저(mysftpuser)가 ssh 프로토콜이 아닌 sftp 프로토콜만 사용하도록 제한

  • 패스워드 설정
sudo passwd <password>

upload 디렉토리 생성 / 권한 설정

  • 디렉토리 생성

/data 디렉토리에 /hiai 및 /upload 디렉토리를 생성합니다

sudo mkdir -p /data/hiai/upload

  • 권한 설정
sudo chown -R root:sftpusers /data/hiai
sudo chown -R hiai:sftpusers /data/hiai/upload

-R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 포함

  • 소유 그룹 및 권한을 확인합니다

SSH Configure파일 수정

  • sshd_config 파일을 엽니다
sudo vi /etc/ssh/sshd_config
  • 마지막 줄에 해당 라인을 추가해 줍니다
Match Group sftpusers
ChrootDirectory /data/%u
ForceCommand internal-sftp

SSH 서비스 상태 확인 및 재시작

  • 상태 확인
service sshd status

  • 재시작
service sshd restart

SFTP 작동 테스트

Filezilla 를 통해서 테스트 진행하였습니다.


출처

https://ansan-survivor.tistory.com/424

https://codechacha.com/ko/ubuntu-install-openssh/

https://parkadd.tistory.com/129

반응형

'Server' 카테고리의 다른 글

[Ubuntu] SSL인증서 발급 | 갱신  (1) 2023.12.27
__wsl2 에서 systemctl 사용하기__  (0) 2023.01.08
vmware ESXi  (0) 2022.10.02
CPU 과다 점유 이슈  (0) 2022.09.09
톰캣 다중 설정  (0) 2022.08.31

댓글