Konfigurasi Ssh Tunneling

Sep 16, 2020 · 4 mins read

SSH tunneling atau bisa disebut ssh port forwarding adalah suatu metode koneksi SSH terenkripsi antara client server melalui port tertentu.

SSH tunneling biasa digunakan untuk transfer data yang tidak terenkripsi, seperti VNC dan FTP. Secara singkat metode ini sama dengan akses VPN, jadi IP address yang terlacak adalah IP address server remote.

Ada tiga tipe untuk melakukan SSH Port Forwarding:

  • Local Port Forwarding
    Meneruskan koneksi dari klien/lokal ke server/remote melalui SSH dan dan port tujuan.

  • Remote Port Forwarding
    Meneruskan koneksi dari server/remote ke klien/lokal melalui SSH dan dan port tujuan.

  • Dynamic Port Forwarding
    Membuat server proxy SOCKS yang memungkinkan koneksi di berbagai port.

Daftar Isi:

Local Port Forwarding

Local Port Forwarding sering digunakan untuk remote di jaringan lokal seperti database atau Server VNC.

Di Linux, MacOS atau sistem Unix lainnya, local port forwarding menggunakan opsi -L

$ ssh -L [IP_LOKAL:]PORT_LOKAL:TUJUAN:PORT_TUJUAN [USER@]IP_SERVER

keterangan:

  • [IP_LOKAL:]PORT_LOKAL - IP Lokal dan port. Ketika IP_LOKAL kosong, otomatis ip ssh klien menjadi localhost (127.0.0.1)
  • TUJUAN:PORT_TUJUAN - IP atau hostname dan port dari server tujuan / remote
  • [USER@]IP_SERVER - SSH remote user dan alamat IP Server

Gunakan port diatas 1024 pada PORT_LOKAL. Secara default SSH menggunakan port 22, jika server SSH menggunakan port selain 22 maka tambahkan dibelakang sendiri -p [ANGKA_PORT]

Hostname tujuan harus bisa diakses oleh Server SSH.

Misal, kita mau akses MySQL langsung ke localhost, tapi kita tidak bisa akses database secara langsung, harus masuk kedalam server tertentu. Database MySQL ada di db001.host dengan port 3306 dan hanya bisa diakses oleh server pub001.host, maka ssh port forwardingnya:

$ ssh -L 3336:db001.host:3306 user@pub001.host

Dengan perintah diatas ketika akses database dari klien dengan alamat 127.0.0.1:3336 maka koneksi akan diteruskan ke db001.host:3306 melalui server pub001.host.

Dengan sedikit modifikasi perintah, kita bisa lakukan remote ke banyak database MySQL sekaligus. Misal ada server database db002.host dan hanya dapat diakses melalui pub001.host.

$ ssh -L 3336:db001.host:3306 3337:db002.host:3306 user@pub001.host

Kita bisa akses database kedua dengan alamat 127.0.0.1:3337, yang membedakan hanya port-nya saja.

Remote Port Forwarding

Remote Port Forwarding adalah kebalikan dari Local Port Forwarding, koneksi dari remote server menuju ke lokal kita. Biasa digunakan untuk memberi akses internal kepada seseorang dari luar.

Di Linux, MacOS atau sistem Unix lainnya, remote port forwarding menggunakan opsi -R

$ ssh -R [REMOTE:]PORT_REMOTE:TUJUAN:PORT_TUJUAN [USER@]IP_SERVER

keterangan:

  • [REMOTE:]PORT_REMOTE - Alamat IP dan port untuk server remote. Jika REMOTE kosong, maka akses remote diberikan ke semua alamat IP.
  • TUJUAN:PORT_TUJUAN - Alamat IP atau hostname dan port server tujuan.
  • [USER@]IP_SERVER - SSH remote user dan alamat IP Server.

Misal, kita mau menunjukkan aplikasi web yang ada di lokal kepada teman kita dikantor. Tapi kita tidak punya IP Publik, maka dengan SSH Remote Port Forwarding teman kita bisa akses web aplikasi yang sedang jalan di lokal.

$ ssh -R 8080:127.0.0.1:3000 -N -f user@remote.host

Perintah diatas akan membuka port 3000 dari lokal kita, kemudian semua trafik diteruskan ke port 8080 dari luar. Kini teman kantor bisa akses aplikasi web lokal kita lewat browser ip_server_ssh:8080

Jika masih ada kendala, masuk ke server kemudian edit file /etc/ssh/sshd_config, dan ubah nilai GatewayPorts menjadi yes.

Dynamic Port Forwarding

Dynamic Port FOrwarding akan membuat sebuah socket di lokal (klien ssh) yang bertindak sebagai server proxy SOCKS. Ketika klien sudah terhubung maka akan diteruskan ke server dan semua trafik ke masing-masing port.

Di Linux, MacOS atau sistem Unix lainnya, local port forwarding menggunakan opsi -D

$ ssh -D [IP_LOKAL:]PORT_LOKAL [USER@]IP_SERVER

keterangan:

  • [IP_LOKAL:]PORT_LOKAL - Alamat IP dan port lokal. Jika IP_LOKAL kosong, maka ip yang diberikan adalah localhost (127.0.0.1).
  • [USER@]IP_SERVER - SSH remote user dan alamat IP Server.

Misal kita akan buat SSH Tunnel SOCKS ke port 9090:

$ ssh -D 9090 -N -f user@remote.host

Setelah terhubung, lakukan konfigurasi proxy SOCKS di browser Firefox, Google Chrome atau aplikasi lain yang mendukung.

Untuk konfigurasi di Windows silahkan gunakan tools PuTTY.

Kesimpulan

SSH tunneling memudahkan kita dalam melakukan remote dengan aman, serta bisa sebagai VPN tanpa harus install VPN server terlebih dahulu.

Jika ada masalah, silahkan komentar dibawah. Terima kasih.

Sharing is caring!