📤
FTP란
파일을 주고받기 위해 오래전부터 쓰여온 프로토콜로, 명령을 주고받는 제어 채널(TCP 21번)과 실제 파일이 오가는 별도의 데이터 채널을 함께 사용합니다.
FTP(File Transfer Protocol)는 로그인, 디렉터리 이동 같은 명령은 21번 포트의 제어 채널로 주고받고, 실제 파일 데이터는 별도의 데이터 채널로 전송하는 구조입니다. 이 데이터 채널은 능동 모드에서는 20번 포트를, 수동 모드에서는 그때그때 협상된 포트를 사용합니다. 기본 상태의 FTP는 이 모든 과정을 암호화 없이 평문으로 주고받습니다.
🔒
SFTP란
이미 암호화되어 있는 SSH 연결 위에서 동작하는 파일 전송 방식으로, FTP와는 이름만 비슷할 뿐 사용하는 프로토콜 자체가 완전히 다릅니다.
SFTP(SSH File Transfer Protocol)는 SSH 프로토콜의 하위 기능(서브시스템)으로 동작하며, 기본적으로 SSH와 같은 22번 포트를 사용합니다. 로그인부터 파일 목록 조회, 실제 파일 전송까지 하나의 암호화된 SSH 연결 안에서 전부 이뤄지기 때문에 별도의 데이터 채널을 따로 열 필요가 없습니다.
❗
흔한 오해: SFTP는 "FTP + SSL"이 아니다
SFTP는 FTP 프로토콜과는 무관한 SSH 기반의 별개 프로토콜이며, 실제로 FTP에 암호화를 더한 것은 FTPS라는 또 다른 세 번째 프로토콜입니다.
이름이 비슷해 자주 혼동되지만, SFTP는 FTP 프로토콜을 전혀 사용하지 않고 SSH 위에서 완전히 새로 정의된 방식입니다. 반면 FTPS(FTP over TLS/SSL)는 기존 FTP 프로토콜의 통신 구간에 TLS 암호화를 씌운 것으로, 990번 포트를 쓰는 암묵적(implicit) 방식이나 21번 포트에서 AUTH TLS 명령으로 시작하는 명시적(explicit) 방식으로 동작합니다. 즉 FTP·SFTP·FTPS는 이름은 비슷해도 서로 다른 세 가지 프로토콜입니다.
🛡️
보안 측면 비교
평범한 FTP는 로그인 정보와 파일 내용이 그대로 노출될 수 있는 반면, SFTP와 FTPS는 방식은 다르지만 둘 다 통신 구간을 암호화해 도청 위험을 크게 줄여줍니다.
암호화되지 않은 FTP로 로그인하면 같은 네트워크 경로에 있는 누군가가 아이디·비밀번호는 물론 전송 중인 파일 내용까지 그대로 들여다볼 수 있습니다. SFTP는 SSH의 암호화 계층을, FTPS는 TLS의 암호화 계층을 각각 활용해 이런 도청 위험을 막아주기 때문에, 민감한 데이터를 다룰 때는 둘 중 하나를 사용하는 것이 권장됩니다.
🧱
방화벽·NAT 통과 이슈
FTP는 제어·데이터 채널이 분리되어 있고 수동 모드에서 포트가 매번 바뀌어 방화벽 설정이 까다로운 편이지만, SFTP는 하나의 포트만 열면 되어 관리가 한결 단순합니다.
FTP는 두 개의 채널을 오가야 하는 구조 특성상 방화벽이나 NAT 장비가 이를 제대로 처리하도록 별도 설정이 필요한 경우가 많았고, 특히 수동 모드에서는 데이터 채널 포트가 매번 다르게 협상되어 방화벽 규칙을 짜기가 더 까다로웠습니다. 반면 SFTP는 SSH와 동일하게 단일 포트(기본 22번)만으로 모든 통신이 이뤄지기 때문에 방화벽 관리가 훨씬 단순합니다.
🧭
언제 무엇을 쓰면 좋을까
오늘날에는 특별한 이유가 없다면 SFTP나 FTPS 같은 암호화된 방식을 우선 고려하는 것이 일반적으로 권장되며, 순수 FTP는 레거시 시스템에서만 제한적으로 쓰이는 경우가 많습니다.
많은 웹 호스팅 서비스와 서버 관리 도구가 이제 SFTP를 기본 또는 우선 옵션으로 제공하고 있으며, SSH 계정이 이미 있다면 별도 설정 없이 바로 SFTP를 사용할 수 있는 경우도 많습니다. 반면 순수 FTP는 오래된 내부 시스템이나 특정 레거시 장비와의 호환을 위해 제한적으로 남아 있는 경우가 대부분이므로, 새로운 환경을 구성한다면 암호화가 되는 방식을 우선 검토하는 것이 안전합니다.