/엔지니어/네트워킹 / 서버/SSH 포트포워딩 · 터널링 완전 가이드
네트워킹 / 서버중급UbuntuDebianCentOSmacOSssh포트포워딩터널링

SSH 포트포워딩 · 터널링 완전 가이드

로컬 포트포워딩으로 DB·Redis에 접속하고, 원격 포트포워딩으로 내부 서버를 외부에 노출하며, 동적 포트포워딩으로 SOCKS 프록시를 구성하는 방법을 설명합니다.

3가지 포트포워딩 방식

방식명령 플래그용도
로컬 (Local)-L로컬 포트 → 원격 서비스 접속
원격 (Remote)-R원격 포트 → 로컬 서비스 노출
동적 (Dynamic)-DSOCKS 프록시 (전체 트래픽 터널)

로컬 포트포워딩 (-L)

패턴: 내 컴퓨터의 포트 → 서버를 경유 → 서버 측 서비스 접속

Bash
# 문법
ssh -L [로컬IP:]로컬포트:목적지호스트:목적지포트 서버

# 서버의 PostgreSQL에 로컬에서 접속
ssh -L 15432:localhost:5432 [email protected]
# 이제 로컬에서: psql -h localhost -p 15432 -U admin

# 방화벽 뒤 Redis 접속
ssh -L 16379:10.0.1.5:6379 [email protected]
# redis-cli -h localhost -p 16379

# 여러 포트 동시에
ssh -L 15432:localhost:5432     -L 16379:localhost:6379     -L 18080:localhost:8080     [email protected]

# 셸 없이 터널만 유지 (-N)
ssh -N -L 15432:localhost:5432 [email protected]

# 백그라운드로 실행 (-f -N)
ssh -f -N -L 15432:localhost:5432 [email protected]

원격 포트포워딩 (-R)

패턴: 서버의 포트 → 로컬 서비스 노출 (NAT 뒤 로컬 서버를 외부에 공개)

Bash
# 문법
ssh -R [원격IP:]원격포트:목적지호스트:목적지포트 서버

# 로컬 3000 포트를 서버의 8080으로 노출
ssh -R 8080:localhost:3000 [email protected]
# 이제 public-server.example.com:8080 접속 → 내 localhost:3000

# 서버 측 /etc/ssh/sshd_config 설정 필요
# GatewayPorts yes    # 외부에서 원격 포트 접속 허용

동적 포트포워딩 (-D) — SOCKS 프록시

패턴: 로컬 포트를 SOCKS5 프록시로 — 모든 트래픽을 서버 경유

Bash
# SOCKS5 프록시 시작 (로컬 1080 포트)
ssh -D 1080 [email protected]

# 또는 백그라운드
ssh -f -N -D 1080 [email protected]

# curl로 SOCKS5 프록시 사용
curl --socks5 localhost:1080 https://example.com

# 브라우저 설정:
# Firefox → 설정 → 네트워크 → SOCKS5 프록시 localhost:1080

~/.ssh/config로 터널 자동화

CODE
# 접속 시 자동으로 DB 터널 열기
Host prod-with-tunnel
    HostName prod-server.example.com
    User deploy
    LocalForward 15432 localhost:5432
    LocalForward 16379 localhost:6379

# 점프 호스트를 통한 터널
Host internal-via-bastion
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    LocalForward 18080 localhost:8080
Bash
# 설정 후 한 번에 접속 + 터널
ssh prod-with-tunnel

터널 프로세스 관리

Bash
# 실행 중인 SSH 터널 확인
ps aux | grep "ssh -"
# 또는
ss -tlnp | grep ssh

# 특정 포트의 터널 종료
pkill -f "ssh -N -L 15432"

# autossh로 터널 자동 재연결
sudo apt install -y autossh
autossh -M 0 -f -N -L 15432:localhost:5432 [email protected]
#ssh#포트포워딩#터널링#socks#bastion#네트워크
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서GNU/Linux man 페이지

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.