Episode ini membedah SSH tunneling untuk akses remote yang aman: local forward untuk VNC dan RDP, tunnel dua arah untuk bypass firewall, jump host dengan ssh -J, serta reverse tunnel agar server di belakang NAT bisa diakses dari luar jaringan.

Di episode 13 kalian mengenali SSH tunnel sebagai lapis enkripsi paling universal. Episode 14 mengupas teknik itu sampai tuntas. Menguasai SSH tunneling bukan sekadar "menambah enkripsi" — ini membuka kemampuan yang lebih besar: melewati firewall yang menutup port VNC/RDP, mencapai mesin di belakang NAT, dan mengakses jaringan internal melalui satu jalur aman.
Episode ini membahas empat pola: local forward untuk VNC dan RDP, tunnel dua arah, jump host dengan ssh -J, dan reverse tunnel untuk akses dari luar. Di akhir episode, kalian akan bisa mengakses server remote dengan aman dari mana pun, tanpa membuka satu pun port VNC ke internet.
Konsep local forward sederhana: kalian meminta SSH membuka port di mesin lokal yang meneruskan semua koneksinya melalui koneksi SSH ke tujuan di sisi server. Karena data melewati SSH, semuanya terenkripsi penuh.
ssh -L <port lokal>:<tujuan>:<port tujuan> user@serverAturan praktis penting: tujuan ditulis dari sudut pandang server SSH. localhost:5900 berarti port 5900 di mesin server itu sendiri. Ini sering membingungkan pemula yang mengira localhost merujuk ke mesin lokal.
Skenario paling umum: server VNC terikat ke localhost, dan kalian ingin mengaksesnya dari mesin lain. Buka tunnel:
ssh -L 5901:localhost:5900 arman@192.168.1.20Perintah ssh -L 5901:localhost:5900 arman@192.168.1.20 membuka port 5901 di mesin lokal yang meneruskan ke port 5900 di server — melewati koneksi SSH yang terenkripsi. Sekarang hubungkan viewer ke port lokal:
vncviewer localhost:5901Server tetap terikat ke localhost dan firewall tetap menutup port 5900 dari jaringan. Satu-satunya jalan masuk adalah SSH — persis pola yang kita harapkan.
Tip
Tambahkan opsi -N pada SSH agar tunnel berjalan tanpa membuka shell: ssh -N -L 5901:localhost:5900 arman@server. Gunakan -f jika ingin tunnel berjalan di latar belakang. Kombinasi -Nf ideal untuk tunnel yang murni penerusan port.
Pola yang sama berlaku untuk RDP. Server xrdp mendengarkan di port 3389; bungkus dengan tunnel sebelum terhubung:
ssh -N -L 33890:localhost:3389 arman@192.168.1.20Setelah tunnel aktif, arahkan client RDP ke port lokal 33890:
xfreerdp /v:localhost:33890 /u:arman /sec:nlaPerintah xfreerdp /v:localhost:33890 /u:arman /sec:nla menghubungkan client RDP ke port tunnel. Dari sisi Windows, gunakan mstsc /v:localhost:33890 dengan tujuan yang sama. RDP kini terenkripsi ganda: enkripsi internal RDP ditambah enkripsi SSH.
Kadang kalian perlu akses sebaliknya: mesin lokal yang menyediakan port bagi server SSH. Itulah reverse tunnel -R, yang akan kita pakai juga untuk NAT di bagian akhir:
ssh -N -R 5902:localhost:5901 arman@192.168.1.20Di mesin server, port 5902 akan meneruskan ke port 5901 di mesin lokal. Ini berguna saat aplikasi di server perlu menjangkau service yang hanya berjalan di mesin kalian.
Dalam arsitektur produksi, server target sering tidak bisa dijangkau langsung — harus melewati bastion host atau jump host terlebih dahulu. Opsi -J membuat SSH membangun koneksi ke target melewati satu atau lebih perantara:
ssh -N -L 5901:localhost:5900 -J arman@bastion arman@192.168.1.20Perintah ssh -N -L 5901:localhost:5900 -J arman@bastion arman@192.168.1.20 membuka tunnel ke server internal melalui bastion. Koneksi dari viewer tetap vncviewer localhost:5901 — kalian tidak perlu tahu ada perantara di tengah.
Dengan pola ini, jump host menjadi satu-satunya pintu masuk ke jaringan internal, dan semua port service internal tetap tertutup dari dunia luar.
Tantangan terakhir: server kalian di belakang NAT/rumahan tidak memiliki IP publik. Solusi paling praktis adalah reverse tunnel menuju mesin publik yang bisa dijangkau. Dari server di belakang NAT:
ssh -N -R 5901:localhost:5900 arman@vps-publik.comPerintah ssh -N -R 5901:localhost:5900 arman@vps-publik.com membuat port 5901 di VPS publik meneruskan ke port 5900 di server kalian. Sekarang dari mana pun di internet, akses ke server cukup dua langkah:
ssh -L 15901:localhost:5901 arman@vps-publik.com
vncviewer localhost:15901Agar tunnel tetap hidup, kombinasikan dengan tools seperti autossh yang otomatis menyalakan ulang koneksi jika putus. Ini pola yang sama dengan banyak solusi VPN/remote komersial, tapi dengan komponen open source murni.
Episode 14 menguasai SSH tunneling: local forward untuk VNC dan RDP dengan -L, tunnel dua arah dengan -R, jump host dengan -J, dan reverse tunnel agar server di belakang NAT bisa diakses dari luar — semuanya tanpa membuka port VNC/RDP ke publik.
Inti yang harus dibawa pulang:
-L meneruskan port lokal ke tujuan di sisi server.localhost:5900 adalah server.-N menonaktifkan shell; -f menjalankan tunnel di latar belakang.-J melompati bastion host menuju server internal.-R mengekspos port server ke mesin publik.Di episode 15 selanjutnya kita menyeberang ke protokol kedua: RDP server di Linux — menginstall dan mengonfigurasi xrdp dengan file xrdp.ini dan backend Xorg/Xvnc, menghubungkannya dari Windows mstsc, serta membandingkannya dengan GNOME Remote Desktop. Sampai jumpa!