2026년 SSH SOCKS5 프록시: macOS, Linux, Windows 및 sshuttle 완전 가이드
Source: Dev.to
SSH SOCKS5 터널 만들기
-D 플래그는 동적 포트 포워딩을 생성합니다: SSH가 로컬 포트에서 수신 대기하고 SOCKS5 프록시 역할을 합니다. 트래픽은 SSH 서버의 네트워크를 통해 나갑니다.
Your app → localhost:1080 (SOCKS5) → SSH (encrypted) → remote server → internet터널을 백그라운드에서 시작하기
ssh -D 1080 -f -C -q -N user@your-server.com실행 중인지 확인하기
pgrep -a ssh서버를 통한 트래픽 라우팅 확인
curl --socks5 127.0.0.1:1080 https://ipinfo.io/ip플래그 의미
| 플래그 | 설명 |
|---|---|
-D 1080 | 로컬 포트 1080에서 SOCKS5 프록시 |
-f | 인증 후 백그라운드로 포크 |
-C | gzip 압축 활성화 |
-q | 조용한 모드 |
-N | 원격 명령을 실행하지 않음 (터널만) |
macOS 시스템 전역 SOCKS 프록시 스크립트
아래 스크립트를 ~/bin/tunnel 로 저장하고 실행 권한을 부여한 뒤(chmod +x ~/bin/tunnel), sudo 로 실행하세요.
#!/usr/bin/env bash
NET_SERVICE="Wi‑Fi" # run: networksetup -listallnetworkservices
PORT=1080
SERVER="user@your-server.com"
if [[ "$EUID" -ne 0 ]]; then
echo "Run as root: sudo $0"
exit 1
fi
PID=$(pgrep -f "ssh -D ${PORT}")
if [[ -n "$PID" ]]; then
echo "Disconnecting (PID $PID)..."
kill -9 "$PID"
networksetup -setsocksfirewallproxystate "${NET_SERVICE}" off
echo "Tunnel closed."
else
echo "Connecting to ${SERVER}..."
ssh -D "${PORT}" -f -C -q -N "${SERVER}"
networksetup -setsocksfirewallproxy "${NET_SERVICE}" 127.0.0.1 "${PORT}"
networksetup -setsocksfirewallproxystate "${NET_SERVICE}" on
echo "Connected. System SOCKS proxy active on :${PORT}."
finetworksetup 은 macOS 시스템 전역 SOCKS 프록시를 설정하므로, 시스템 프록시를 따르는 모든 애플리케이션이 터널을 통해 트래픽을 라우팅합니다.
Linux: ProxyChains 사용하기
설치
# Debian/Ubuntu
sudo apt install proxychains4
# Fedora
sudo dnf install proxychains-ng/etc/proxychains4.conf 구성
# Comment out the default Tor line:
# socks4 127.0.0.1 9050
# Add your SSH SOCKS5 proxy:
socks5 127.0.0.1 1080SSH 터널 시작 (위와 동일한 명령어)
ssh -D 1080 -f -C -q -N user@your-server.com프록시를 통해 모든 CLI 도구 라우팅
proxychains4 curl https://ipinfo.io/ip
proxychains4 git clone https://github.com/someorg/private-reposshuttle를 이용한 투명 TCP 프록시 (Linux/macOS)
설치
# macOS (Homebrew)
brew install sshuttle
# Ubuntu
sudo apt install sshuttle모든 트래픽 라우팅 (루프 방지를 위해 SSH 서버 제외)
sshuttle -r user@your-server.com 0.0.0.0/0 --exclude your-server.com서버 뒤의 사설 서브넷만 라우팅
sshuttle -r user@your-server.com 10.0.0.0/8Ctrl+C를 눌러 중지합니다. 브라우저 설정이 필요하지 않으며, 모든 TCP 연결이 투명하게 가로채집니다.
윈도우 클라이언트
| Tool | Steps |
|---|---|
| Bitvise SSH Client | 1. Bitvise를 설치합니다. 2. Services → SOCKS/HTTP Proxy Forwarding을 엽니다. 3. 127.0.0.1:1080에서 SOCKS5를 활성화합니다.4. 서버에 연결합니다. |
| Proxifier | 1. Proxifier를 설치합니다. 2. 새 프록시를 추가합니다: 주소 127.0.0.1, 포트 1080, 유형 SOCKS5.3. 라우팅하려는 애플리케이션을 대상으로 규칙을 생성합니다 (예: chrome.exe). |
Keep the Tunnel Alive (SSH Config)
유휴 기간 동안 연결을 유지하기 위해 ~/.ssh/config에 호스트 항목을 추가합니다.
Host tunnel-server
HostName your-server.com
User youruser
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
Compression yes별칭을 사용하여 터널을 시작합니다:
ssh -D 1080 -f -C -q -N tunnel-serverFeature Comparison
| Feature | SSH -D | sshuttle | WireGuard |
|---|---|---|---|
| 설정 복잡도 | 낮음 | 낮음 | 보통 |
| 전체 트래픽 라우팅 | 아니오 (앱별 SOCKS) | 예 (전체 TCP) | 예 (전체 프로토콜) |
| UDP 지원 | 아니오 | 아니오 | 예 |
| 서버 전제조건 | SSH만 | SSH만 | wireguard-tools |
| 속도 | 좋음 | 좋음 | 우수 |
| 추천 용도 | 단일 앱 라우팅 | 전체 TCP 프록시 | 영구 VPN |
SSH 서버 강화
키 기반 인증만 사용
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519특정 사용자로 접근 제한 –
/etc/ssh/sshd_config에 추가AllowUsers youruser비표준 포트 사용 자동화된 무차별 대입 시도 감소
Port 2222SSH 키를 매년 교체하고
~/.ssh/authorized_keys에서 오래된 키를 삭제합니다.
이 단계들을 통해 macOS, Linux, Windows에서 SSH SOCKS5 프록시를 빠르게 실행하고, 애플리케이션별 또는 시스템 전체에 적용할 수 있으며, 필요에 따라 sshuttle이나 WireGuard와 같은 전체 트래픽 솔루션으로 교체할 수 있습니다.