SFTP와 FTPS 모두 FTP 전송을 암호화합니다. 둘 다 이름에 'S'가 들어갑니다. 자주 혼동되는데 — 그 혼동이 중요합니다. 왜냐하면 완전히 다른 기술로 완전히 다르게 작동하기 때문입니다.
연결을 설정할 때 잘못된 것을 선택하면 연결에 실패합니다. 올바른 것을 선택하려면 각각이 실제로 무엇인지 이해해야 합니다. 명확한 설명을 드리겠습니다.
FTP: 기준점
보안 변형으로 가기 전에 일반 FTP를 이해하는 것이 도움이 됩니다. 파일 전송 프로토콜(File Transfer Protocol)은 1970년대 초에 설계되었습니다 — 오늘날의 인터넷과 전혀 달랐던 시절입니다. 암호화가 전혀 없습니다. 자격증명(사용자 이름과 비밀번호)이 네트워크를 통해 평문으로 전송됩니다. 파일 내용도 마찬가지입니다.
FTP는 트래픽이 신뢰할 수 있는 환경을 벗어나지 않는 내부 네트워크, 레거시 호스팅, 또는 암호화가 문제가 되지 않는 제어된 상황에서 여전히 널리 사용됩니다. 간단하고, 작동하며, 거의 모든 서버에서 지원됩니다. 하지만 공개 인터넷에서 자격증명을 평문으로 보내는 것은 피해야 합니다.
여기서 두 가지 보안 변형이 등장합니다 — 그리고 사람들이 혼란스러워하기 시작하는 지점입니다.
SFTP (SSH 파일 전송 프로토콜)
이름에도 불구하고 SFTP는 보안이 추가된 FTP가 아닙니다. SSH(Secure Shell) 프로토콜 스위트의 일부로 독립적으로 개발된 완전히 다른 프로토콜입니다.
SFTP는 포트 22에서 SSH를 통해 실행됩니다. 인증, 명령, 파일 내용 — 모든 것이 SSH 계층에 의해 암호화됩니다. SFTP 클라이언트와 표준 FTP 클라이언트는 사용자에게는 같은 결과(파일 전송)로 보이더라도 근본적으로 다른 프로토콜을 사용합니다.
SFTP의 주요 특징:
- SSH를 통해 실행됩니다. 서버에 SSH가 활성화되어 있으면 별도 설정 없이 SFTP도 거의 확실히 사용 가능합니다.
- 단일 포트(22). 모든 통신이 하나의 포트에서 이루어져 방화벽 설정이 간단합니다.
- 키 기반 인증. 비밀번호 대신 SSH 키 쌍으로 인증할 수 있습니다. 개인 키는 절대 기기를 떠나지 않고, 서버는 공개 키만 저장합니다. 비밀번호 인증보다 훨씬 안전합니다.
- 엔드투엔드 암호화. 자격증명과 파일 내용이 어떤 네트워크에 있든 항상 암호화됩니다.
- TLS 인증서 불필요. 인증은 SSH 키나 SSH를 통한 비밀번호로 처리됩니다 — 인증 기관도, 인증서 갱신도 없습니다.
FTPS (TLS 위의 FTP)
FTPS는 TLS 암호화가 추가된 실제 FTP입니다. 다른 접근 방식입니다: 기존 FTP 프로토콜을 가져와서 HTTPS에서 사용하는 것과 같은 암호화 계층인 TLS로 연결을 감쌉니다.
FTPS에는 두 가지 모드가 있습니다:
명시적 FTPS (FTPES)
클라이언트가 포트 21(표준 FTP 포트)에서 서버에 연결하고 즉시 AUTH TLS 명령을 보내 연결을 암호화로 업그레이드합니다. 서버가 이 명령을 지원해야 합니다. 클라이언트가 TLS 업그레이드를 명시적으로 요청하기 때문에 "명시적"이라고 합니다.
암묵적 FTPS
클라이언트가 포트 990에 연결하고 TLS 핸드셰이크가 즉시 발생합니다 — FTP 통신 전에. 암호화되지 않은 단계가 없습니다. 이 모드는 덜 일반적이지만 일부 서버에서는 여전히 사용됩니다.
FTPS의 주요 특징:
- FTP 기반. 동일한 명령 세트, 동일한 수동/능동 모드 고려사항, 데이터 전송을 위한 동일한 다중 포트 동작.
- TLS 인증서 필요. 서버에 주기적으로 갱신해야 하는 유효한 SSL/TLS 인증서가 필요합니다.
- 방화벽 복잡성. 수동 모드의 FTP는 동적 데이터 포트 범위를 엽니다. 방화벽은 이 연결을 제대로 검사하기 위해 FTP를 이해해야 합니다(FTP 인식 방화벽 검사라고 합니다). TLS 암호화로 방화벽이 FTP 트래픽을 검사할 수 없어 수동 모드가 복잡해질 수 있습니다.
- 비밀번호 기반만 가능. FTPS는 키 기반 인증을 지원하지 않습니다 — 사용자 이름과 비밀번호로 인증합니다(단, TLS로 암호화됩니다).
- 높은 호환성. 기존 FTP 설정에서 직접 업그레이드할 수 있어 많은 기업 및 호스팅 환경에서 FTPS를 제공합니다.
나란히 비교
| 특징 | FTP | SFTP | FTPS |
|---|---|---|---|
| 기반 | FTP | SSH | FTP + TLS |
| 기본 포트 | 21 | 22 | 21 (명시적) / 990 (암묵적) |
| 암호화 | 없음 | 항상 (SSH) | 있음 (TLS) |
| 키 기반 인증 | 아니오 | 예 | 아니오 |
| 인증서 필요 | 아니오 | 아니오 | 예 |
| 방화벽 친화성 | 복잡 | 간단 (포트 1개) | 복잡 |
| 서버 가용성 | 보편적 | 모든 SSH 서버 | 설정 필요 |
무엇을 선택해야 할까?
SFTP를 사용하세요, 만약: 서버를 직접 관리하거나(또는 SSH가 있는 Linux/Unix 서버인 경우), 보안이 우선순위이며, 간단한 방화벽 설정을 원한다면. SFTP가 현대적 표준입니다. 다른 것을 사용할 특별한 이유가 없다면 SFTP가 기본 선택입니다.
FTPS를 사용하세요, 만약: 호스팅 제공자나 클라이언트 서버가 요구하거나, 기존 FTP 설정에 암호화를 추가하지만 인프라를 변경할 수 없는 경우. 수년간 FTP 서버를 운영해온 많은 기업 환경에서 기존 설정의 변경을 최소화하는 업그레이드 경로로 FTPS를 선택합니다.
일반 FTP를 사용하세요, 만약: 암호화가 필요 없는 신뢰할 수 있는 내부 네트워크에 있거나, 보안 변형을 지원하지 않는 레거시 시스템을 다루는 경우. 공개 인터넷을 통하는 모든 것에는 완전히 피하세요.
FTPSuite는 세 가지 모두 지원합니다
FTPull(자동 다운로드)과 FTPush(자동 업로드) 모두 FTP, SFTP, FTPS를 기본으로 처리합니다. 연결 설정에서 프로토콜 선택은 클릭 한 번입니다 — 앱이 기본 차이점을 자동으로 처리합니다. 호스트, 포트, 자격증명, 프로토콜을 입력하면 나머지는 자동으로 처리됩니다.
서버가 어떤 프로토콜을 사용하는지 모르겠다면 가이드를 참조하세요: FTP, SFTP, FTPS: 내 서버는 어떤 프로토콜을 쓸까?