Panduan Praktis SSH Tunnels untuk Developer: Local dan Remote Port Forwarding
AW
Axel W

Dipublikasikan 20 Juni 2026

Panduan Praktis SSH Tunnels untuk Developer: Local dan Remote Port Forwarding

Di era cloud native yang dipenuhi dengan puluhan tool orchestration dan AI agent framework, ada satu teknologi klasik yang tetap menjadi andalan sehari-hari: SSH Tunnels. Dengan satu baris perintah, kamu bisa mengakses database privat di VPC, membuka port localhost remote di browser lokal, atau bahkan mengekspose server rumahan ke internet publik. Artikel ini menyajikan panduan praktis berdasarkan tutorial dari iximiuz Labs.

SSH tunnels bekerja dengan memanfaatkan koneksi SSH yang sudah terenkripsi untuk menyalurkan traffic dari satu titik ke titik lain. Ada dua mode utama: local port forwarding dan remote port forwarding. Memahami keduanya akan menghemat banyak waktu saat troubleshooting infrastruktur atau mengakses resource terbatas.

Mengapa SSH Tunnels Masih Relevan di Era Cloud Native

Banyak developer langsung beralih ke VPN, Zero Trust, atau service mesh ketika butuh akses ke resource privat. Padahal, dalam banyak skenario, SSH tunnels sudah cukup dan jauh lebih ringan. Tidak perlu instalasi client tambahan, tidak ada konfigurasi cluster yang rumit, dan tidak ada biaya vendor lock-in. SSH sudah ada di hampir setiap server Linux dan macOS.

Beberapa use case umum meliputi: akses PostgreSQL di private subnet melalui bastion host, membuka port debugging remote di laptop, mengekspose webhook localhost ke public untuk testing callback, dan tunneling ke container runtime tanpa publish port ke internet.

Konsep Dasar Local Port Forwarding

Local port forwarding adalah mode paling sering digunakan. Sintaksnya sederhana:

ssh -L [local_addr:]local_port:remote_addr:remote_port [user@]sshd_addr

Flag -L memberitahu SSH client untuk membuka port di mesin lokal dan meneruskan semua traffic ke remote_addr:remote_port yang dijangkau dari mesin remote. Artinya, service yang hanya bisa diakses dari dalam server remote kini tersedia di localhost laptop-mu.

Langkah 1: Akses Service Remote via Local Port

Misalkan ada web server yang berjalan di 127.0.0.1:80 pada mesin remote dengan IP publik 203.0.113.30. Dari luar, port 80 tidak terbuka karena service terikat ke loopback interface. Untuk mengaksesnya dari laptop, jalankan:

ssh -L 8080:localhost:80 203.0.113.30

Sekarang buka browser dan arahkan ke http://localhost:8080. Traffic akan diteruskan melalui tunnel SSH ke port 80 di mesin remote. Perintah curl localhost:8080 di terminal lokal juga akan menghasilkan response yang sama seperti curl localhost:80 di mesin remote.

Langkah 2: Akses Database Privat dari Laptop

Skenario paling umum adalah mengakses database yang hanya bisa dijangkau dari bastion host. Anggap Redis berjalan di 172.16.0.10:6379 di private VPC, dan kamu punya SSH ke bastion 203.0.113.30. Jalankan:

ssh -L 6379:172.16.0.10:6379 203.0.113.30

Setelah itu, koneksi redis-cli -h localhost -p 6379 di laptop akan terhubung langsung ke Redis privat di VPC. Tools seperti TablePlus, pgAdmin, atau DBeaver juga bisa menggunakan localhost:6379 seolah-olah database berjalan di mesin lokal.

Langkah 3: Remote Port Forwarding untuk Expose Localhost

Kadang kebutuhannya justru sebaliknya: kamu ingin mengekspose service lokal ke mesin remote. Gunakan flag -R:

ssh -R 8080:localhost:3000 203.0.113.30

Perintah di atas membuat mesin remote mendengarkan port 8080 dan meneruskan traffic ke localhost:3000 di laptop-mu. Ini berguna saat demo aplikasi ke klien tanpa deploy ke staging, atau saat menerima webhook dari third-party service ke development server lokal.

Langkah 4: Background Tunneling dengan ssh -f -N

Secara default, perintah ssh -L akan memblokir terminal. Untuk menjalankan tunnel di background tanpa membuka shell interaktif, tambahkan flag -f dan -N:

ssh -f -N -L 8080:localhost:80 203.0.113.30

Flag -f memindahkan SSH ke background setelah autentikasi berhasil, sedangkan -N memberitahu SSH untuk tidak mengeksekusi remote command. Kombinasi ini ideal untuk tunnel jangka panjang yang tidak memerlukan interaksi manual.

Langkah 5: Kombinasi Tunnel untuk Akses VPC Internal

Untuk skenario kompleks dengan beberapa hop, SSH mendukung tunnel bertingkat. Misalkan kamu perlu mengakses internal dashboard di 10.0.0.5:443 melalui bastion 203.0.113.30, lalu ke jump host 172.16.0.5. Gunakan ProxyJump:

ssh -J 203.0.113.30 172.16.0.5 -L 8443:10.0.0.5:443

Atau konfigurasi lebih bersih di ~/.ssh/config:

Host bastion
    HostName 203.0.113.30
    User admin

Host internal
    HostName 172.16.0.5
    User admin
    ProxyJump bastion
    LocalForward 8443 10.0.0.5:443

Dengan konfigurasi ini, cukup jalankan ssh internal dan buka https://localhost:8443 di browser.

Cheat Sheet dan Kesimpulan

Berikut ringkasan perintah yang paling sering dipakai:

  • ssh -L local_port:remote_host:remote_port user@host: local forwarding

  • ssh -R remote_port:local_host:local_port user@host: remote forwarding

  • ssh -D 1080 user@host: dynamic SOCKS proxy

  • ssh -f -N -L ...: background tunnel tanpa shell

SSH tunnels adalah skill fundamental yang setiap developer dan DevOps engineer harus kuasai. Teknik ini tidak tergantikan oleh tool modern dan seringkali menjadi solusi paling cepat saat infrastruktur sedang dalam kondisi kritis. Untuk visualisasi interaktif dan lab lengkap, kunjungi iximiuz Labs.