SSH(Secure Shell)는 네트워크를 통해 원격 서버에 안전하게 접속하는 프로토콜이다. 모든 통신이 암호화되어 도청·변조를 방지한다. 서버 관리, 파일 전송(SCP, SFTP), 포트 포워딩에 사용된다.
주요 명령어
bash
# 기본 SSH 접속
ssh username@192.168.1.100
# 특정 포트
ssh -p 2222 username@server.com
# SSH 키로 인증
ssh -i ~/.ssh/id_rsa username@server.com
# SCP 파일 전송
scp local_file.txt username@server:/remote/path/
# 원격 → 로컬 복사
scp username@server:/remote/file.txt ./local/
# SFTP 인터랙티브 세션
sftp username@server
SSH 키 기반 인증
bash
# 키 쌍 생성
ssh-keygen -t ed25519 -C "alice@example.com"
# ~/.ssh/id_ed25519 (개인키)
# ~/.ssh/id_ed25519.pub (공개키)
# 서버에 공개키 등록
ssh-copy-id username@server
# 또는 직접
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
인증 방식
| 방식 | 보안성 | 편의성 |
|---|
| 비밀번호 | 낮음 | 높음 |
| RSA 키 | 높음 | 중간 |
| Ed25519 키 | 매우 높음 | 중간 |
SSH 터널링
bash
# 로컬 포트 포워딩
ssh -L 8080:internal-server:80 jump-host
# localhost:8080 → jump-host → internal-server:80
# SOCKS 프록시
ssh -D 1080 username@server
관련 개념
- •공개키 암호화 — SSH 키 인증 기반
- •RSA — SSH 키 알고리즘 중 하나
- •네트워크 — SSH 통신 환경
참고문헌
- •RFC 4251~4256 — SSH 프로토콜