SSH menyediakan cara mudah, aman, dan cepat untuk membuat proxy tipe SOCKS5. Dokumen ini menjelaskan cara membuat tunnel SSH yang menjadi SOCKS5 proxy lokal, mengonfigurasi browser (Firefox & Chrome), cara mendeploy agar seluruh aplikasi menggunakan proxy, opsi auto-start, serta catatan khusus jika menggunakan Cloudflare Tunnel.
Penting — konsep singkat
- Local SOCKS proxy (contoh): SSH membuka port local (mis. 1080). Browser atau app diarahkan ke 
127.0.0.1:1080sebagai SOCKS5. - Trafik terenkripsi: semua paket dari aplikasi ke server SSH dienkripsi sampai exit-server (remote server) sebelum menuju internet.
 - Bukan HTTP proxy: SOCKS bekerja di level yang lebih rendah (TCP), cocok untuk HTTP(S) dan protokol lain. Untuk soal header HTTP/HTTPS mungkin butuh solusi tambahan jika ingin proxy HTTP transparan. 
 
Langkah cepat — perintah SSH yang paling sering dipakai
 
ssh -D 1080 -C -q -N [email protected] Penjelasan singkat:
-D 1080→ membuka SOCKS proxy lokal di port1080-C→ compress data (opsional)-q→ quiet (opsional)-N→ jangan eksekusi perintah remote (hanya tunneling)
1) Konfigurasi browser
Firefox (disarankan)
- Open Preferences → General → Network Settings → Settings…
 - Pilih 
Manual proxy configuration. - Di bagian SOCKS Host isi 
127.0.0.1dan port1080. PilihSOCKS v5. - Cek opsi Proxy DNS when using SOCKS v5 (agar DNS request ikut lewat tunnel).
 
Chrome / Chromium
Chrome tidak punya setting SOCKS built-in; gunakan salah satu cara:
- Gunakan ekstensi seperti 
Proxy SwitchyOmegaatauFoxyProxydan arahkan ke SOCKS5127.0.0.1:1080. - Atau jalankan Chrome dengan flag (Linux/macOS):
 
 
google-chrome --proxy-server="socks5://127.0.0.1:1080" 
# atau untuk chromium 
chromium --proxy-server="socks5://127.0.0.1:1080" 2) Windows — PuTTY & setting browser
- Buka PuTTY → Session: 
Host Name (or IP)isiserver.example.com. - Pada menu 
Tunnels: pilihDynamic, source port1080, klikAdd→ akan tampilD1080. - Kembali ke 
Session→ Save → Open. Sekarang PuTTY membuka SOCKS proxy lokal di127.0.0.1:1080. - Konfigurasi browser sama seperti langkah Firefox/Chrome (atur ke SOCKS5).
 
3) Membuat seluruh aplikasi melewati SOCKS (system-wide)
Beberapa opsi tergantung OS:
Linux — proxychains-ng
 
# Install (Debian/Ubuntu) 
sudo apt update && sudo apt install proxychains4 
 
# Edit /etc/proxychains4.conf tambahkan baris terakhir: 
# socks5  127.0.0.1 1080 
 
# Contoh jalankan firefox via proxychains: 
proxychains4 firefox Catatan: tidak semua aplikasi bekerja sempurna dengan proxychains (mis. aplikasi yang langsung pakai kernel-level sockets tertentu).
macOS — Proxifier (GUI, berbayar) atau SSHuttle
- Proxifier: aplikasi GUI yang bisa memaksa semua koneksi lewat SOCKS5. Cocok untuk pengguna non-CLI.
 - sshuttle: membuat routing IP level (mirip VPN ringan). Contoh:
 
 
pip install sshuttle 
# contoh jalankan (akan meminta sudo) 
sudo sshuttle -r [email protected] 0/0 -vv sshuttle bagus untuk membuat sebagian besar trafik IP lewat server remote — cocok jika butuh transparan untuk banyak aplikasi tanpa konfigurasi per-app.
Windows — Proxifier
Proxifier (trial/berbayar) banyak dipakai untuk mengarahkan semua aplikasi lewat SOCKS5. Konfigurasinya cukup mudah: tambahkan proxy 127.0.0.1:1080 (SOCKS5) lalu buat rules untuk aplikasi yang ingin dialihkan.
4) Jika butuh HTTP/HTTPS proxy "lokal" (opsional)
Beberapa aplikasi butuh HTTP proxy (bukan SOCKS). Solusi: jalankan HTTP-to-SOCKS proxy lokal yang meneruskan ke SOCKS5:
- polipo (lama, masih dipakai) atau privoxy + redsocks.
 
 
# contoh sederhana: gunakan polipo (jika tersedia) 
sudo apt install polipo 
# konfig: /etc/polipo/config 
# socksParentProxy = "127.0.0.1:1080" 
# proxyAddress = "127.0.0.1" 
# proxyPort = 8123 
 
# Lalu set HTTP Proxy di aplikasi ke 127.0.0.1:8123 5) Auto-start tunnel SSH (systemd on Linux)
Buat unit systemd agar tunnel otomatis start dan restart jika terputus.
 
[Unit] 
Description=SSH dynamic SOCKS proxy 
After=network.target 
 
[Service] 
User=aldo 
ExecStart=/usr/bin/ssh -D 1080 -C -N -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes [email protected] 
Restart=always 
RestartSec=10 
 
[Install] 
WantedBy=multi-user.target  
# Simpan sebagai /etc/systemd/system/ssh-socks.service 
sudo systemctl daemon-reload 
sudo systemctl enable --now ssh-socks.service 6) Keamanan & tips praktis
- Gunakan kunci SSH (public key) dan 
ssh-agentagar tidak menyimpan password di skrip. - Tambahkan opsi 
-o ExitOnForwardFailure=yesuntuk memaksa ssh exit jika port tidak tersedia. - Jika membutuhkan high availability, siapkan beberapa server sebagai fallback dan gunakan skrip sederhana untuk fallback otomatis.
 - Periksa kebijakan server/ISP: beberapa penyedia membatasi port atau penggunaan tunneling.
 
7) Debugging umum
- Tidak bisa browse: pastikan SSH sudah connect dan listen di port 1080 (
ss -ltnp | grep 1080). - DNS bocor: aktifkan "Proxy DNS when using SOCKS v5" di Firefox, atau gunakan 
proxychainsdengan pengaturanproxy_dns. - Kecepatan lambat: cek latency ke server; kompresi 
-Ckadang membantu untuk trafik text tapi tidak untuk media terenkripsi (HTTPS). 
Update:
8) Catatan: Menggunakan Cloudflare Tunnel (contoh Cloudflare Tunnel / cloudflared)
Jika server remote tidak punya IP publik langsung (mis. server di rumah di balik NAT), salah satu solusi adalah menggunakan Cloudflare Tunnel (sebelumnya Argo Tunnel). Namun penting memahami perbedaan:
- Cloudflare Tunnel (cloudflared) membuat koneksi outbound dari server ke Cloudflare network, sehingga server menjadi reachable lewat domain/hostname yang diatur pada Cloudflare without exposing public IP.
 - Cloudflare Tunnel tidak otomatis membuat SOCKS proxy untuk kita — tunnel tersebut lebih sering dipakai untuk mengexpose web service (HTTP/HTTPS) ke internet melalui Cloudflare.
 
Cara menggabungkan: SSH over Cloudflare Tunnel (opsi)
Ada dua pendekatan yang umum dipakai ketika Cloudflare Tunnel terlibat:
A. Expose port SSH via Cloudflare Access (recommended untuk akses SSH)
- Konfig Cloudflare Tunnel di server (pasang 
cloudflared), buat ingress rule untuksshatau TCP service. - Di Cloudflare Dashboard buat Access policy (Zero Trust) untuk membatasi siapa yang boleh connect.
 - Client SSH dapat terhubung ke hostname yang disediakan Cloudflare seperti 
ssh -p 443 [email protected]jika port 22 di-rewrite ke 443 lewat Cloudflare (tergantung konfigurasi). 
B. Reverse SSH + Tunnel (jika tidak mau expose SSH secara publik)
Jika server tidak bisa diakses langsung tapi client punya server VPS with public IP, bisa gunakan reverse SSH:
 
# di server lokal (di balik NAT) jalankan: 
ssh -R 2222:localhost:22 [email protected] -N 
 
# lalu dari client (atau anywhere) connect ke vps: 
ssh -p 2222 [email protected] 
 Cloudflare Tunnel bisa menggantikan VPS publik di atas jika dikonfigurasi untuk memberi akses TCP/SSH.
Contoh: Menjalankan SSH melalui Cloudflare Tunnel (ringkasan langkah)
- Install 
cloudflareddi server remote. - Buat tunnel dan atur ingress rules untuk mengizinkan akses SSH (TCP) atau buat subdomain yang memakai Cloudflare Access untuk autentikasi.
 - Jika Cloudflare mengizinkan TCP tunneling ke SSH, client bisa tetap memakai perintah 
ssh -D 1080 -p user@your-tunnel-host(konfigurasi tergantung opsi Cloudflare). 
Catatan penting: fitur TCP tunneling atau expose direct SSH lewat Cloudflare mungkin membutuhkan konfigurasi Zero Trust / Access dan tidak selalu tersedia di paket gratis. Selalu periksa dokumentasi Cloudflare dan kebijakan keamanan organisasi.
9) Contoh kasus lengkap (macOS / Linux) — step-by-step
- Buat pair SSH (jika belum): 
ssh-keygen -t ed25519 -C "aldo@homepc" ssh-copy-id [email protected] - Test koneksi biasa: 
ssh [email protected] - Jalankan SOCKS tunnel: 
ssh -D 1080 -C -q -N [email protected] - Konfigurasi Firefox: SOCKS5 127.0.0.1:1080 + Proxy DNS
 - Jika ingin auto-start: buat systemd service seperti di atas atau gunakan launchd plist di macOS.
 
10) Troubleshooting cepat
| Masalah | Penyebab umum | Solusi | 
|---|---|---|
| SSH tidak connect | DNS/port/credential | Test ssh -v, cek firewall/port forwarding |  
| Browser tetap pakai IP lokal (DNS leak) | DNS tidak lewat SOCKS | Aktifkan Proxy DNS di Firefox / gunakan proxychains dengan proxy_dns | 
| Kecepatan lambat | Latency / bandwidth server | Pindah server atau gunakan kompresi/optimasi | 
