서버 관리나 파일 전송 작업을 하다 보면 TELNET, SSH, FTP, SFTP 같은 프로토콜을 자주 접하게 된다.
비슷해 보이지만 보안 측면에서 큰 차이가 있어서 정리해봤다.
요즘은 보안 때문에 SSH와 SFTP만 쓰지만, 왜 그런지 이해하는 게 중요하다.
# TELNET 접속 예시
telnet 192.168.0.1 23
문제점:
⚠️ 보안 취약점으로 인해 현재는 거의 사용되지 않는다.
레거시 시스템이나 테스트 환경에서만 제한적으로 사용된다.
# SSH 접속 예시
ssh user@192.168.0.1
# 공개키 인증 방식
ssh -i ~/.ssh/id_rsa user@192.168.0.1
장점:
1. 패스워드 인증
2. 공개키 인증 (권장)
# SSH 키 생성
ssh-keygen -t rsa -b 4096
# 공개키를 서버에 복사
ssh-copy-id user@server
리눅스 및 유닉스 서버 관리의 표준 프로토콜이다.
AWS EC2, GCP 등 클라우드 서버 접속도 모두 SSH를 사용한다.
제어 채널과 데이터 채널 분리:
1. Active Mode (능동 모드)
2. Passive Mode (수동 모드)
# FTP 접속 예시
ftp ftp.example.com
# 파일 다운로드
get filename.txt
# 파일 업로드
put filename.txt
문제점:
보안 요구사항이 낮은 공개 파일 배포 등에서만 제한적으로 사용된다.
중요한 파일은 절대 FTP로 전송하면 안 된다.
# SFTP 접속 예시
sftp user@192.168.0.1
# 파일 다운로드
get remote_file.txt
# 파일 업로드
put local_file.txt
# 디렉토리 생성
mkdir new_directory
장점:
FTP vs SFTP 차이:
| 구분 | FTP | SFTP |
|---|---|---|
| 채널 | 제어/데이터 분리 | 단일 채널 |
| 포트 | 21, 20 | 22 |
| 암호화 | 없음 | SSH 암호화 |
| 방화벽 | 복잡 | 간단 |
보안이 필요한 모든 파일 전송 환경에서 표준적으로 사용된다.
FileZilla 같은 FTP 클라이언트도 SFTP를 지원한다.
| 구분 | 주요 기능 | 기본 포트 | 암호화 | 현재 사용 |
|---|---|---|---|---|
| TELNET | 원격 접속 | 23 | ❌ 없음 | 거의 사용 안 함 |
| SSH | 원격 접속 | 22 | ✅ 있음 | ⭐ 표준 |
| FTP | 파일 전송 | 21, 20 | ❌ 없음 | 제한적 사용 |
| SFTP | 파일 전송 | 22 | ✅ 있음 | ⭐ 표준 |
원격 접속이 필요할 때:
파일 전송이 필요할 때:
# SSH 설정 파일 수정 (/etc/ssh/sshd_config)
PermitRootLogin no # root 직접 로그인 차단
PasswordAuthentication no # 패스워드 인증 비활성화 (공개키만)
Port 2222 # 기본 포트 변경
# 원격 명령 실행
ssh user@server 'ls -la'
# 로컬 포트 포워딩
ssh -L 8080:localhost:80 user@server
# 파일 복사 (scp)
scp file.txt user@server:/path/
# 디렉토리 복사
scp -r folder/ user@server:/path/
# rsync로 파일 동기화
rsync -avz source/ user@server:/destination/
# SCP로 파일 전송
scp -r localdir/ user@server:/remotedir/
네트워크 프로토콜을 정리하면서 보안의 중요성을 다시 한번 느꼈다.
TELNET과 FTP는 과거의 유물이 되어가고 있고,
요즘은 SSH와 SFTP가 사실상 표준이다.