FTP 사용법 알아보자
프론트 스터디 팀원이 회사에서 'FTP 하나 열어주세요'라는 요청이 올 때 뭘 해야할지 몰랐다고 해 저도 알아두고자 정리해봤습니다.
FTP
파일 전송 프로토콜(File Transfer Protocol) 은 서버와 클라이언트 사이에서 파일을 주고받기 위한 규칙입니다.
FTP 서버
FTP 서버는 FTP 주소를 가지고 있고 FTP 연결을 송수신하는 데 사용되는 컴퓨터입니다.
우리가 파일을 업로드하면 업로드된 파일이 클라이언트에서 서버로 전송되고, 우리가 파일을 다운로드하면 다운로드된 파일이 서버에서 클라이언트로 전송됩니다.
즉 FTP 서버는 수신자와 송신자 사이의 중간 지점이라고 볼 수 있습니다.
FTP의 원리
클라이언트가 파일을 요청하면 서버가 요청된 파일을 제공하죠. 그래서 연결을 설정하려면 두 개의 기본 채널이 필요합니다.
- 명령 채널: 로그인 정보, 어떤 파일에 액세스할 것인지 등과 같은 기본 정보를 전달합니다. (21번 포트)
- 데이터 채널: 두 클라이언트 간에 파일 데이터를 전송합니다. (20번 포트)

또한 FTP 연결 모드에는 Active 모드와 Passive 모드가 있습니다.
Active FTP 모드에서는 클라이언트가 서버에 접속한 뒤, 자신의 포트를 열고 "이쪽으로 데이터를 보내줘"라고 서버에 알립니다. 그러면 서버가 클라이언트에 역으로 접속하여 데이터를 보냅니다.
클라이언트의 PC나 공유기에는 보통 방화벽이 있습니다. 방화벽 입장에서는 외부(서버)에서 갑자기 안으로 들어오려는 연결을 '침입'으로 간주하여 차단해 버립니다.
방화벽 문제때문에 Passive 모드가 표준으로 사용됩니다.
Passive 모드에서는 클라이언트가 서버에 "데이터 보낼 테니 통로 하나 열어줘"라고 요청합니다. 서버가 통로(포트)를 열면, 클라이언트가 서버의 그 통로로 접속합니다.
모든 연결 시도를 클라이언트(안쪽)에서 서버(바깥쪽)로 하기 때문에, 클라이언트쪽 방화벽에 걸리지 않습니다.
FTP를 쓰는 이유
FTP를 사용하면 동시에 대량의 파일을 전송하고, 연결이 끊긴 경우 전송을 재개할 수 있으며, 전송 일정을 예약할 수 있다는 장점이 있습니다.
또한, 오랫동안 사용되어왔기 때문에 대부분의 사람들이 이미 이 프로토콜에 익숙합니다. FileZilla, WinSCP, Cyberduck등 FTP를 보다 간편하게 사용할 수 있도록 지원하는 데스크톱 FTP 소프트웨어 도구도 다양하게 있죠.
FTP의 단점
FTP의 가장 치명적인 단점은 바로 보안이 취약하다는 것입니다. FTP는 사이버 보안이 발전되기 전 1970년대에 개발되었습니다. 또한, 보안 프로토콜로 설계된 것이 아니기 때문에 FTP 전송은 암호화되지 않습니다. 그래서 해커들이 쉽게 비밀번호, 사용자 이름, 그 외 기타 민감한 데이터를 읽을 수 있습니다.
이러한 보안상의 구멍으로 인해 오늘날에는 FTP에 대한 지원이 점점 줄어들고 있습니다. SFTP, FTPS처럼 FTP를 대체할 수 있는 옵션도 출시되었죠.
Google Chrome의 경우 2020년부터 FTP 지원을 중단했고, Firefox도 FTP 관련 코드를 모두 삭제했습니다.
macOS에서 SFTP 서버 구축하기
FTP의 대안으로 주로 사용되는 SFTP(Secure File Transfer Protocol)는 원격으로 파일을 안전하게 전송하기 위한 프로토콜입니다. SSH를 기반으로 데이터 전송 중 암호화를 제공해 보안을 강화합니다.
포트 번호가 여러개인 FTP와 달리 SFTP는 22번 포트 하나만 로그인, 명령 실행, 데이터 통신에 사용합니다. 이 하나의 연결만 암호화 해 인증정보와 데이터 모두 암호화할 수 있습니다.
이제 제 맥(macOS)을 안전한 파일 서버로 만들어보겠습니다.
- [시스템 설정] > [일반] > [공유] 메뉴로 들어가 **
원격 로그인**을 켭니다

- 옆의
i버튼을 눌러 표시된 주소 확인 후, 이걸 공유하면 됩니다. - 터미널에 명령어 입력
# 접속
sftp [서버주소]
# ⚠️ 경로 확인 필요!!
# 원격 위치 (pwd): "상대방 컴퓨터의 어디인가?" (업로드될 목적지)
# 로컬 위치 (lpwd): "내 컴퓨터의 어디인가?" (파일이 있는 출발지)
# 이동 명령어:
# 서버 이동:
cd [경로]
# 내 컴퓨터 이동:
lcd [경로]
# 💡 접속 직후 반드시 pwd와 lpwd를 확인해 경로가 꼬이지 않았는지 체크할 것!
# 파일 올리기 (Local -> Server)
put [로컬파일]
# 폴더는
put -r [로컬폴더명]
# 파일 내려받기 (Server -> Local)
get [원격파일]
# 목록 보기
# 서버 목록
ls
# 내 로컬 목록
lls
# 종료
exit
# 또는
bye➕ SSH Key 설정
매번 비밀번호를 입력하는 건 귀찮을 뿐만 아니라, 무차별 대입 공격(Brute-force)에 취약해 실무에서는 SSH Key 방식을 사용합니다.
- 내 컴퓨터에서 키 생성 (이미 있다면 생략 가능)
ssh-keygen -t rsa -b 4096 # 암호화 알고리즘의 RSA, 키 복잡도 4096bit
# 그럼 ~/.ssh/id_rsa.pub 파일이 생성됨- 서버(내 맥)에 키 복사하기
내 공개키를 서버에 등록해두면, 다음부터는 비밀번호 없이 로그인됩니다.
ssh-copy-id [서버주소]
# 내 컴퓨터에 있는 id_rsa.pub (공개키) 내용을 복사해서, 서버의 특정 파일(~/.ssh/authorized_keys)에 자동으로 추가해줌결론
맥의 기본 기능을 켜고 몇 가지 핵심 명령어만 익히면 누구나 안전한 파일 전송 서버를 운영할 수 있습니다. 이제 'FTP 하나 열어주세요'라는 요청이 올 때 빠르게 작업할 수 있게 됐습니다 👏👏