Post

SFTP Overview

SFTP Overview

1. SFTP란?

SFTP(SSH File Transfer Protocol)는 SSH(Secure Shell) 프로토콜을 기반으로 파일을 안전하게 전송하는 프로토콜입니다. 기존 FTP와 달리 모든 데이터가 암호화되어 전송되므로 보안이 중요한 환경에서 널리 사용됩니다.

1.1. SFTP vs FTP vs SCP

특징SFTPFTPSCP
암호화SSH 기반 암호화기본적으로 없음SSH 기반 암호화
포트22 (SSH)21 (제어), 20 (데이터)22 (SSH)
대화형 모드지원지원미지원
전송 재개지원지원미지원
디렉토리 작업지원지원제한적

1.2. SFTP를 사용하는 이유

  • 보안: SSH 암호화로 데이터 도청 방지
  • 방화벽 친화적: 단일 포트(22)만 사용
  • 대화형 작업: 원격 파일 시스템 탐색 가능
  • 전송 재개: 중단된 전송을 이어서 진행 가능

2. SFTP 접속 방법

2.1. 기본 접속

1
❯ sftp username@hostname

2.2. 포트 지정 접속

기본 SSH 포트(22)가 아닌 다른 포트를 사용하는 경우 -P 옵션을 사용합니다.

1
❯ sftp -P 2222 username@hostname

SFTP에서는 대문자 -P를 사용합니다. 소문자 -p는 파일 권한 보존 옵션입니다.

2.3. SSH 키 인증 접속

비밀번호 대신 SSH 키를 사용하여 접속할 수 있습니다.

1
❯ sftp -i ~/.ssh/id_rsa username@hostname

3. 주요 명령어

SFTP에 접속하면 sftp> 프롬프트가 표시됩니다. 이 상태에서 다양한 명령어를 사용할 수 있습니다.

3.1. 디렉토리 탐색

명령어설명예시
pwd원격 서버의 현재 디렉토리 확인pwd
lpwd로컬의 현재 디렉토리 확인lpwd
ls원격 서버 파일 목록 조회ls -la
lls로컬 파일 목록 조회lls -la
cd원격 서버 디렉토리 이동cd /var/log
lcd로컬 디렉토리 이동lcd ~/Downloads

3.2. 파일 다운로드 (get)

원격 서버에서 로컬로 파일을 다운로드합니다.

1
2
3
4
5
6
7
8
# 단일 파일 다운로드
sftp> get remote_file.txt

# 다른 이름으로 다운로드
sftp> get remote_file.txt local_file.txt

# 디렉토리 전체 다운로드 (-r 옵션)
sftp> get -r remote_directory

3.3. 파일 업로드 (put)

로컬에서 원격 서버로 파일을 업로드합니다.

1
2
3
4
5
6
7
8
# 단일 파일 업로드
sftp> put local_file.txt

# 다른 이름으로 업로드
sftp> put local_file.txt remote_file.txt

# 디렉토리 전체 업로드 (-r 옵션)
sftp> put -r local_directory

3.4. 파일 및 디렉토리 관리

명령어설명예시
mkdir원격 서버에 디렉토리 생성mkdir new_folder
rmdir원격 서버 빈 디렉토리 삭제rmdir empty_folder
rm원격 서버 파일 삭제rm old_file.txt
rename원격 서버 파일/디렉토리 이름 변경rename old.txt new.txt
chmod원격 서버 파일 권한 변경chmod 644 file.txt
chown원격 서버 파일 소유자 변경chown user:group file.txt

3.5. 기타 유용한 명령어

명령어설명
help 또는 ?사용 가능한 명령어 목록 표시
!command로컬에서 쉘 명령어 실행 (예: !ls)
exit 또는 quitSFTP 세션 종료

4. 실용적인 사용 예시

4.1. 로그 파일 다운로드

서버의 로그 파일을 로컬로 다운로드하는 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
❯ sftp username@hostname

sftp> cd /var/log
sftp> ls
auth.log  syslog  nginx/

sftp> get auth.log
Fetching /var/log/auth.log to auth.log
auth.log                                100%  125KB  12.5MB/s   00:00

sftp> exit

4.2. 웹 서버에 파일 배포

로컬에서 작업한 파일을 웹 서버에 업로드하는 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
❯ sftp username@hostname

sftp> cd /var/www/html
sftp> put -r dist/
Uploading dist/ to /var/www/html/dist
Entering dist/
dist/index.html                         100%  2048     2.0MB/s   00:00
dist/style.css                          100%  4096     4.0MB/s   00:00
dist/app.js                             100%  8192     8.0MB/s   00:00

sftp> exit

4.3. 배치 모드로 자동화

-b 옵션을 사용하면 명령어 파일을 지정하여 자동으로 실행할 수 있습니다.

1
2
3
4
5
6
7
8
# sftp_commands.txt 파일 생성cat sftp_commands.txt
cd /backup
get database_backup.sql
exit

# 배치 모드 실행
❯ sftp -b sftp_commands.txt username@hostname

5. 요약

이 포스트에서는 SFTP의 개념과 CLI를 통한 사용 방법을 살펴보았습니다. SFTP는 SSH 기반의 암호화된 파일 전송 프로토콜로, 보안이 중요한 환경에서 파일을 안전하게 전송할 수 있습니다. get, put 명령어로 파일을 주고받고, l 접두사가 붙은 명령어(lls, lcd 등)로 로컬 시스템을 조작할 수 있다는 점을 기억하면 쉽게 사용할 수 있습니다.


6. Reference


궁금하신 점이나 추가해야 할 부분은 댓글이나 아래의 링크를 통해 문의해주세요. Written with KKamJi

This post is licensed under CC BY 4.0 by the author.