HTTP vs FTP vs SSH 프로토콜 비교 | 용도·보안·파일 전송 선택 가이드

HTTP vs FTP vs SSH 프로토콜 비교 | 용도·보안·파일 전송 선택 가이드

이 글의 핵심

HTTP vs FTP vs SSH — 계층·보안·전송 패턴을 비교하고 파일·API·관리에 맞게 고릅니다.

들어가며

HTTP는 웹과 API의 중심이고, FTP는 전통적인 파일 전송에 이름이 남아 있으며, SSH는 원격 셸과 파일 복사(scp/sftp)의 표준입니다. 세 프로토콜은 설계 목적이 다르고, “파일만 옮기면 된다”고 해서 아무거나 쓰면 보안·운영에서 발목을 잡을 수 있습니다.

아키텍처: 컴포넌트 관계를 한눈에

  • HTTP(S): 클라이언트가 요청하면 서버가 응답하는 무상태 모델입니다. 중간에 CDN·프록시·캐시가 끼어 동일 URL이라도 응답이 달라질 수 있습니다.
  • FTP/FTPS: 제어 채널(명령)데이터 채널(파일 바이트)분리됩니다. 방화벽은 두 종류의 포트를 함께 봐야 합니다.
  • SSH: 하나의 암호화 연결에 셸·SFTP·포워딩이 멀티플렉싱됩니다. 포트 22 하나로 보이지만, 권한 설계는 셸 포함으로 넓어질 수 있습니다.

왜 혼동하기 쉬운가요?

이름에 “전송”이 붙은 프로토콜이 여럿이라, 같은 ‘파일 복사’라도 HTTP 멀티파트, SFTP, FTPS보안 경계·포트·클라이언트가 모두 다릅니다. 새 구축은 가능한 한 HTTPS·SFTP처럼 단순한 방화벽 규칙에 맞추는 편이 운영 비용이 적습니다.

프로덕션에서 주의할 점

  • 평문 FTP감사·규정에 걸리기 쉽습니다. FTPS·SFTP·객체 스토리지로의 이관을 로드맵에 둡니다.
  • SSH로 파일만 주고 싶다면 셸을 막고 SFTP만(chroot 등) 허용하는 패턴을 검토합니다.
  • 공개 다운로드HTTPS + CDN이 캐시·브라우저·모바일과의 궁합이 좋습니다.

비유로 말씀드리면, HTTP가게 카운터에서 주문·결제하는 흐름, FTP창고 문 열고 상자 옮기기, SSH건물 관리실 열쇠로 들어가서 일하기에 가깝습니다. 파일만 옮기더라도 암호화·인증·방화벽 요구가 다릅니다.

언제 HTTP(S), 언제 FTP/FTPS, 언제 SSH(SFTP)를 쓰나요?

관점HTTP(S)FTP / FTPSSSH / SFTP·SCP
성능·패턴요청-응답·캐시·CDN과 궁합대량 파일·레거시 업로드암호화 터널 안에서 파일·셸
사용성브라우저·REST·도구가 가장 많음클라이언트·패시브 모드 등 설정 이슈키 관리·권한 설계 필요
적용 시나리오API, 정적 배포, 객체 스토리지 연동호스팅·구형 워크플로서버 관리, 안전한 파일 전송

이 글을 읽으면

  • HTTP / FTP / SSH의 역할과 전형적인 포트·보안 모델을 구분하실 수 있습니다
  • 파일 전송·API·서버 관리에 맞는 선택 기준을 잡으실 수 있습니다
  • curl, sftp, scp실전 명령 예제익히실 수 있습니다
  • 레거시 FTP를 대체할 때의 주의점을 이해하실 수 있습니다

목차

  1. 빠른 비교표
  2. 각 프로토콜 상세
  3. 성능·운영 비교
  4. 사용 시나리오별 추천
  5. 마이그레이션 가이드
  6. 실전 팁
  7. 흔한 질문
  8. 마무리

1. 빠른 비교표

특성HTTP(S)FTP / FTPSSSH (SFTP/SCP 포함)
주 목적문서·API·웹 리소스파일 업/다운로드암호화된 원격 셸 + 파일 전송
기본 포트80 / 443(HTTPS)21 (+ 데이터 채널)22
전송 암호화HTTPS(TLS)로 표준화FTPS(TLS) 또는 평문(레거시)전송 전체가 암호화(SSH)
인증쿠키·Bearer·TLS 클라이언트 등사용자/비번(전통적)키·비밀번호 등
방화벽 친화매우 좋음(443 단일)passive/active 이슈22 단일(단, 정책에 따라 제한)
대표 단점파일 전용 프로토콜은 아님평문 FTP·패시브 모드 이슈셸 접근 = 오남용 시 위험(권한 설계 필수)

2. 각 프로토콜 상세

HTTP / HTTPS

특징: 요청-응답 모델입니다. REST·GraphQL·정적 파일·스트리밍까지 웹의 기본입니다. HTTPS(TLS)로 기밀성·무결성을 확보합니다.

장점

  • 캐시·CDN·브라우저·모바일 SDK와 완벽한 궁합
  • 인증·권한을 애플리케이션 레벨에서 세밀하게 설계 가능

단점

  • “서버 전체 파일 동기화” 같은 전통적 FTP 워크플로에는 직접적이지 않을 수 있음
  • 대용량 업로드는 청크·재개 등을 앱에서 설계

코드 예제 (curl)

curl -fsS -o file.zip https://cdn.example.com/releases/app.zip
curl -X POST https://api.example.com/upload -H "Authorization: Bearer $TOKEN" -F "[email protected]"

FTP / FTPS

특징: 제어 채널(21)데이터 채널이 분리된 오래된 프로토콜입니다. 평문 FTP는 스니핑에 취약하므로 FTPS 또는 SFTP로 대체하는 추세입니다.

장점

  • 레거시 시스템·일부 NAS·업계 도구와의 호환
  • 디렉터리 나열·대량 전송 UI가 성숙

단점

  • 방화벽·NAT에서 패시브/액티브 설정 이슈
  • 평문 FTP는 2026년 기준 신규 구축에 비권장

예제 (안전한 대안 권장)

# 평문 FTP 대신 lftp 등으로 FTPS/SFTP 우선 검토
lftp -u user,pass -e "set ssl:verify-certificate yes; get -O /tmp/ remote.bin; bye" ftps://ftp.example.com

SSH (SFTP / SCP)

특징: 하나의 암호화된 채널에 원격 셸, 포트 포워딩, SFTP(파일), SCP(복사)가 포함됩니다. 파일 전송은 SSH 인증을 그대로 씁니다.

장점

  • 전송 구간이 기본적으로 암호화
  • 키 기반 인증·authorized_keys로 자동화에 적합

단점

  • 셸 접근을 주면 권한 범위가 커질 수 있음 → SFTP만 제한(chroot 등) 설계가 필요할 수 있음

코드 예제

# SCP
scp -i ~/.ssh/id_ed25519 ./local.tar.gz user@server:/var/backups/

# SFTP 대화형
sftp -i ~/.ssh/id_ed25519 user@server

Python (SFTP)

import paramiko

transport = paramiko.Transport(("server.example.com", 22))
transport.connect(username="user", pkey=paramiko.RSAKey.from_private_key_file("/path/id_rsa"))
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.get("/remote/file.bin", "./file.bin")
sftp.close()
transport.close()

3. 성능·운영 비교

관점HTTP(S)FTPSSH
대역폭 활용CDN·병렬 연결·HTTP/2·3로 최적화 용이구현·모드에 따라 편차단일 스트림에 가깝지만 대부분 충분
연결 설정TLS·Keep-Alive로 재사용제어/데이터 채널 이중SSH 핸드셰이크 1회 후 재사용 가능
운영 복잡도낮음(443)높음(포트·패시브)중간(키·권한·제한)

시각화: 용도 매핑

flowchart LR
  subgraph web[웹·API]
    H[HTTPS]
  end
  subgraph files[파일 교환]
    F[FTP/FTPS]
    S[SFTP]
  end
  subgraph admin[관리]
    SH[SSH]
  end
  web --> H
  files --> F
  files --> S
  admin --> SH

실측: 동일 링크에서 curl 다운로드 vs scpCPU·암호 스위트에 따라 차이가 납니다. 병목은 보통 네트워크입니다.


4. 사용 시나리오별 추천

시나리오추천이유
공개 파일·APIHTTPS표준·캐시·보안
브라우저 업로드HTTPS (multipart / S3 presigned 등)FTP 플러그인 의존 제거
서버 간 백업SFTP/rsync over SSH암호화·키 인증
레거시 NAS 동기화FTPS 또는 SFTP로 전환 검토평문 FTP 지양
원격 명령 실행SSH파일 전용 프로토콜로는 부족

5. 마이그레이션 가이드

FTP → SFTP 또는 HTTPS

  1. 클라이언트가 SFTP(WinSCP, lftp, sftp) 지원하는지 확인.
  2. 서버는 OpenSSHSubsystem sftp + 필요 시 chroot.
  3. 자동화 스크립트는 키 인증으로 전환.

FTP → 객체 스토리지 + HTTPS

  1. S3 호환 API 등으로 presigned URL 업로드.
  2. CDN 앞단에 두어 대용량 배포 최적화.

주의: 평문 FTP를 끄기 전에 방화벽·모니터링으로 연결 주체를 확인하세요.


6. 실전 팁

혼합 사용

  • 사용자 대면 다운로드: HTTPS + CDN.
  • 운영자·CI 배포: SSH 키 + SFTP/rsync.
  • FTP가 남아 있으면: 최소 FTPS 또는 VPN 뒤로 이동.

폴백 전략

  • 클라이언트가 SFTP만 되는 경우와 HTTP API만 되는 경우를 나누어 엔드포인트 제공.
  • 레거시 FTP: 읽기 전용·별도 네트워크로 격리.
# rsync over SSH (백업에 자주 사용)
rsync -avz -e "ssh -i ~/.ssh/id_ed25519" ./data/ user@server:/backups/data/

7. 흔한 질문

Q1. HTTP로 파일 올리면 FTP보다 느리지 않나요?

구현에 따라 다릅니다. 청크 업로드·병렬·CDN으로 HTTP가 더 효율한 경우가 많습니다. FTP가 빠르다는 체감은 레거시 환경에서 나온 경우가 많습니다.

Q2. SFTP와 FTPS 중 무엇인가요?

둘 다 암호화되지만 프로토콜 스택이 다릅니다. SFTP는 SSH 위, FTPS는 FTP+TLS입니다. 신규는 SFTP 또는 HTTPS가 더 단순한 경우가 많습니다.

Q3. SSH만 열어두면 HTTP가 필요 없나요?

아닙니다. 웹·모바일 클라이언트가 쓰기엔 HTTPS가 표준입니다. SSH는 운영·백업에 가깝습니다.

Q4. FTP 21번만 막으면 안전한가요?

평문 FTP는 데이터 채널이 다른 포트를 쓰기도 하고, 이미 노출된 자격 증명이 문제일 수 있습니다. 프로토콜 전환이 근본 해결입니다.

Q5. HTTP/3(QUIC)와 SSH는 같이 쓰이나요?

목적이 다릅니다. HTTPS는 웹, SSH는 관리 채널로 병행하는 것이 일반적입니다.


마무리

  • 웹·API·공개 배포HTTPS가 중심입니다.
  • 전통적 파일 서버평문 FTP를 지양하고 SFTP/FTPS/HTTPS로 옮기는 것이 안전합니다.
  • 서버 관리·자동화SSH가 사실상 표준입니다.

한 줄 정리: 사용자와 API는 HTTPS, 운영자·백업은 SSH(SFTP), 레거시 FTP는 단계적으로 끕니다.

흔한 실수와 해결

실수결과해결
SFTP와 FTPS를 혼동해 포트만 22로 열기클라이언트·방화벽 설정이 엇갈림문서에 프로토콜 스택을 명시
HTTPS 업로드만 두고 재시도·중복 제거 미설계네트워크 끊김 시 데이터 꼬임멱등 키·청크 업로드 패턴
SSH에 강한 키 + 넓은 셸 권한키 유출 시 피해 확대최소 권한·별도 배포 키

관련 글

  • HTTP 완벽 가이드
  • FTP 실전 가이드
  • SSH 보안 원격 가이드

키워드

HTTP, HTTPS, FTP, FTPS, SSH, SFTP, SCP, 네트워크, 보안, 비교