1. 서버에 파일을 올려야 하는 상황들
서버를 운영하다 보면 파일을 주고받아야 할 상황이 생각보다 자주 발생합니다.
내 컴퓨터에서 만든 웹사이트 파일을 서버에 올릴 때, 서버에서 생성된 로그 파일을 분석하기 위해 내 컴퓨터로 내려받을 때, 설정 파일을 수정하기 위해 서버에서 내려받고 수정 후 다시 올릴 때가 대표적입니다.
이런 작업을 위해 리눅스에서는 SFTP와 SCP 두 가지 방법을 주로 사용합니다.
2. FTP의 문제점과 SFTP의 등장
예전에는 파일 전송에 **FTP(File Transfer Protocol)**가 사용됐습니다. FTP는 사용하기 편리했지만 치명적인 약점이 있었습니다. 파일 내용뿐 아니라 아이디와 비밀번호까지 암호화 없이 전송되었습니다.
누군가 네트워크를 감청하면 전송 중인 파일과 계정 정보를 통째로 가져갈 수 있었습니다. 이 보안 문제를 해결하기 위해 SSH 기반의 SFTP가 등장했고, 현재는 FTP 대신 SFTP가 표준으로 사용됩니다.
3. SFTP란 무엇인가?
**SFTP(SSH File Transfer Protocol)**는 SSH의 보안 채널 위에서 파일을 전송하는 프로토콜입니다.
SSH와 같은 22번 포트를 사용하고, SSH 키 인증을 그대로 활용할 수 있습니다. SSH만 설치되어 있으면 별도 설정 없이 바로 SFTP를 사용할 수 있습니다.
SFTP는 대화형(Interactive) 세션 방식으로 동작합니다. 접속하면 sftp> 프롬프트가 나타나고, 그 안에서 파일을 업로드하거나 다운로드하는 명령을 입력합니다.
접속 방법입니다.
sftp 사용자명@서버IP주소
SSH 키 파일을 사용하는 경우입니다.
sftp -i 키파일.pem 사용자명@서버IP주소
접속 후 자주 사용하는 명령어는 다음과 같습니다. put 파일명은 내 컴퓨터에서 서버로 파일을 올립니다. get 파일명은 서버에서 내 컴퓨터로 파일을 내려받습니다. ls는 서버의 파일 목록을 봅니다. lls는 내 컴퓨터의 파일 목록을 봅니다. exit은 접속을 종료합니다.
4. SCP란 무엇인가?
**SCP(Secure Copy Protocol)**는 SSH를 기반으로 한 파일 복사 명령어입니다.
SFTP와의 가장 큰 차이는 대화형 세션 없이 한 줄 명령어로 바로 파일을 전송한다는 점입니다. 빠르고 간결해서 간단한 파일 전송 작업에 적합합니다.
내 컴퓨터에서 서버로 파일을 전송하는 형태입니다.
scp 로컬파일 사용자명@서버IP:서버경로
예시로, index.html을 서버의 /var/www/html/ 경로로 전송합니다.
scp index.html ubuntu@123.45.67.89:/var/www/html/
SSH 키 파일을 사용하는 경우 -i 옵션을 추가합니다.
scp -i 키파일.pem index.html ubuntu@123.45.67.89:/var/www/html/
서버에서 내 컴퓨터로 파일을 내려받는 형태입니다.
scp ubuntu@123.45.67.89:/var/log/nginx/access.log ~/Downloads/
폴더 전체를 전송할 때는 -r 옵션을 추가합니다.
scp -r ./myproject ubuntu@123.45.67.89:/home/ubuntu/
5. SFTP와 SCP의 차이 – 언제 무엇을 쓸까?
| 구분 | SFTP | SCP |
|---|---|---|
| 사용 방식 | 대화형 세션 | 한 줄 명령어 |
| 파일 관리 | 탐색, 삭제, 이름 변경 가능 | 복사만 가능 |
| 적합한 상황 | 여러 파일 관리, 서버 탐색 | 단순 파일 전송 |
| 자동화 스크립트 | 가능 (다소 복잡) | 간편 |
단순히 파일 하나를 빠르게 전송하고 싶다면 SCP가 편리합니다. 서버의 디렉토리를 탐색하면서 여러 파일을 관리해야 한다면 SFTP가 적합합니다.
6. GUI로 편리하게 – FileZilla 사용법
명령어가 불편하다면 그래픽 인터페이스(GUI) 도구인 FileZilla를 사용할 수 있습니다. 드래그 앤 드롭으로 파일을 전송할 수 있어 직관적입니다.
FileZilla 사용 방법은 다음과 같습니다.
- FileZilla 공식 사이트에서 무료 다운로드 후 설치합니다.
- 파일 메뉴에서 사이트 관리자를 엽니다.
- 프로토콜을 SFTP로 선택합니다.
- 호스트에 서버 IP, 포트에 22를 입력합니다.
- 로그온 유형을 키 파일로 선택하고 .pem 파일을 지정합니다.
- 연결 버튼을 클릭합니다.
연결되면 왼쪽은 내 컴퓨터, 오른쪽은 서버의 파일 탐색기가 표시됩니다. 파일을 드래그해서 양쪽으로 전송할 수 있습니다.
7. 상황별 추천 방법 정리
파일 하나를 빠르게 서버에 올릴 때는 SCP를 사용합니다. 서버의 파일을 탐색하고 관리해야 할 때는 SFTP를 사용합니다. 명령어가 불편하거나 처음 사용하는 경우에는 FileZilla를 사용합니다. 배포 자동화 스크립트에 파일 전송을 포함할 때는 SCP를 사용합니다.
8. 정리 및 다음 단계
오늘 배운 핵심을 정리합니다.
- 서버와 파일을 안전하게 주고받으려면 암호화된 SFTP 또는 SCP를 사용합니다.
- SFTP는 대화형 세션으로 서버 파일을 탐색하고 관리할 수 있습니다.
- SCP는 한 줄 명령어로 빠르게 파일을 전송할 수 있습니다.
- 명령어가 불편하다면 FileZilla GUI 도구를 활용할 수 있습니다.
다음 글에서는 리눅스 서버를 다룰 때 꼭 알아야 할 핵심 명령어 10가지를 알아보겠습니다.