[2026] HTTP vs FTP vs SSH 프로토콜 비교 | 용도·보안·파일 전송 선택 가이드
이 글의 핵심
HTTP, FTP, SSH의 목적·보안 모델·포트·인증 방식을 비교합니다. 웹 API·대량 파일·원격 관리에 맞는 프로토콜 선택과 curl·OpenSSH 예제를 정리했습니다.
들어가며
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 / FTPS | SSH / SFTP·SCP |
|---|---|---|---|
| 성능·패턴 | 요청-응답·캐시·CDN과 궁합 | 대량 파일·레거시 업로드 | 암호화 터널 안에서 파일·셸 |
| 사용성 | 브라우저·REST·도구가 가장 많음 | 클라이언트·패시브 모드 등 설정 이슈 | 키 관리·권한 설계 필요 |
| 적용 시나리오 | API, 정적 배포, 객체 스토리지 연동 | 호스팅·구형 워크플로 | 서버 관리, 안전한 파일 전송 |
이 글을 읽으면
- HTTP / FTP / SSH의 역할과 전형적인 포트·보안 모델을 구분하실 수 있습니다
- 파일 전송·API·서버 관리에 맞는 선택 기준을 잡으실 수 있습니다
- curl,
sftp,scp등 실전 명령 예제를 익히실 수 있습니다 - 레거시 FTP를 대체할 때의 주의점을 이해하실 수 있습니다
실무에서 마주한 현실
개발을 배울 때는 모든 게 깔끔하고 이론적입니다. 하지만 실무는 다릅니다. 레거시 코드와 씨름하고, 급한 일정에 쫓기고, 예상치 못한 버그와 마주합니다. 이 글에서 다루는 내용도 처음엔 이론으로 배웠지만, 실제 프로젝트에 적용하면서 “아, 이래서 이렇게 설계하는구나” 하고 깨달은 것들입니다. 특히 기억에 남는 건 첫 프로젝트에서 겪은 시행착오입니다. 책에서 배운 대로 했는데 왜 안 되는지 몰라 며칠을 헤맸죠. 결국 선배 개발자의 코드 리뷰를 통해 문제를 발견했고, 그 과정에서 많은 걸 배웠습니다. 이 글에서는 이론뿐 아니라 실전에서 마주칠 수 있는 함정들과 해결 방법을 함께 다루겠습니다.
목차
1. 빠른 비교표
| 특성 | HTTP(S) | FTP / FTPS | SSH (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 "file=@local.bin"
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 등) 설계가 필요할 수 있음 코드 예제 아래 코드는 bash를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.
# SCP
scp -i ~/.ssh/id_ed25519 ./local.tar.gz user@server:/var/backups/
# SFTP 대화형
sftp -i ~/.ssh/id_ed25519 user@server
Python (SFTP) 아래 코드는 python를 사용한 구현 예제입니다. 필요한 모듈을 import하고. 코드를 직접 실행해보면서 동작을 확인해보세요.
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) | FTP | SSH |
|---|---|---|---|
| 대역폭 활용 | CDN·병렬 연결·HTTP/2·3로 최적화 용이 | 구현·모드에 따라 편차 | 단일 스트림에 가깝지만 대부분 충분 |
| 연결 설정 | TLS·Keep-Alive로 재사용 | 제어/데이터 채널 이중 | SSH 핸드셰이크 1회 후 재사용 가능 |
| 운영 복잡도 | 낮음(443) | 높음(포트·패시브) | 중간(키·권한·제한) |
시각화: 용도 매핑
다음은 mermaid를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.
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 scp는 CPU·암호 스위트에 따라 차이가 납니다. 병목은 보통 네트워크입니다.
4. 사용 시나리오별 추천
| 시나리오 | 추천 | 이유 |
|---|---|---|
| 공개 파일·API | HTTPS | 표준·캐시·보안 |
| 브라우저 업로드 | HTTPS (multipart / S3 presigned 등) | FTP 플러그인 의존 제거 |
| 서버 간 백업 | SFTP/rsync over SSH | 암호화·키 인증 |
| 레거시 NAS 동기화 | FTPS 또는 SFTP로 전환 검토 | 평문 FTP 지양 |
| 원격 명령 실행 | SSH | 파일 전용 프로토콜로는 부족 |
5. 마이그레이션 가이드
FTP → SFTP 또는 HTTPS
- 클라이언트가 SFTP(WinSCP, lftp,
sftp) 지원하는지 확인. - 서버는 OpenSSH의
Subsystem sftp+ 필요 시 chroot. - 자동화 스크립트는 키 인증으로 전환.
FTP → 객체 스토리지 + HTTPS
- S3 호환 API 등으로 presigned URL 업로드.
- 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, HTTPS, FTP, FTPS, SSH, SFTP, SCP, 네트워크, 보안, 비교