SSH Port Forwarding

Secure Shell atau yang biasa disebut dengan SSH adalah sebuah protokol administrasi yang memungkinkan seseorang untuk mengakses server dengan aman karena SSH menggunakan enkripsi. Sesuai dengan namanya “secure” yang berarti aman dan “shell” yang merupakan program komputer yang dirancang untuk dijalankan oleh shell Unix.

Kemudian, apa itu SSH Port Forwarding? SSH Port Forwarding atau SSH Tunneling merupakan  sebuah teknik atau cara untuk melakukan tunneling protocol yang memungkinkan data dapat ditransfer dari satu jaringan ke jaringan lain menggunakan SSH. Dengan memanfaatkan SSH koneksi akan menjadi lebih aman apabila dibandingkan dengan mengakses secara langsung. Secara singkat, SSH Port Forwarding dapat digunakan untuk mengakses protokol yang kurang secure atau rentan karena tidak dienkripsi menjadi lebih secure (aman) dengan menggunakan SSH karena SSH menggunakan enkripsi.

Terdapat 3 Tipe SSH Port Forwarding:

  • Local Port Forwarding

Meneruskan koneksi dari user ke server SSH dan kemudian ke port host tujuan. Local Port Forwarding memungkinkan user untuk mengakses suatu server yang dilindungi oleh firewall sehingga tidak bisa diakses secara langsung (untuk mengakses komputer atau PC yang digunakan harus ada pada jaringan private yang sama).

Command untuk Local Port Forwarding menggunakan opsi -L:

ssh -L local_port:remote_address:remote_port user@ip-server
  • Remote Port Forwarding

Meneruskan port dari server ke user dan kemudian ke port host tujuan. Remote Port Forwarding memungkinkan sebuah komputer atau PC dapat diakses melalui internet.

Command untuk Remote Port Forwarding menggunakan opsi -R:

ssh -R remote_port:local_address:local_port user@ip-server
  • Dynamic Port Forwarding

SSH client akan membuat SOCKS proxy yang nantinya akan dikonfigurasikan ke sistem operasi atau web browser. Dynamic Port Forwarding memiliki konsep yang sama dengan proxy atau VPN.

Command untuk Dynamic Port Forwarding menggunakan opsi -D:

ssh -D local_port user@ip-server

Tutorial Local Forwarding

Kita memerlukan setidaknya dua buah mesin untuk melakukan SSH port forwarding, mesin lokal dan mesin remote.

Gambar di bawah ini merupakan mesin remote. Pada remote _server yang beralamat IP 10.10.11.105 ini, terdapat port 8000 yang sedang aktif (kotak merah). Pada port tersebut, sudah terdapat halaman web HTTP yang hanya bisa diakses dari server tersebut sendiri (127.0.0.1). Kita tidak bisa mengakses halaman web tersebut dari komputer lokal kita. Untuk bisa mengaksesnya, kita bisa melakukan local forwarding dari komputer kita menuju port 8000 pada server remote tersebut.

Untuk melakukan SSH local port forwarding, kita bisa menggunakan perintah berikut:

ssh -i private_key -L local_port:remote_address:remote_port user@ip-server

Penjelasan

-i private_key : -i private_key merupakan argumen untuk menandakan bahwa saya akan menggunakan private key untuk melakukan otentikasi SSH. Di sini, kalian bisa menghilangkan -i apabila ingin melakukan SSH dengan menggunakan password. Di sini, saya mengisikan private key bernama id_rsa. Kalian bisa memuat private key menggunakan command ssh-keygen.

local_port : port pada komputer lokal kita. Di sini, saya mengisikan 8080

remote_address : IP destinasi pada remote server. Di sini, saya mengisikan 127.0.0.1

remote_port : Port destinasi pada remote server. Di sini, saya mengisikan 8000

user : User pada remote server. Di sini, saya memasukkan user strapi

ip_server : IP remote server. Di sini, saya memasukkan 10.10.11.105.

 

Sehingga, perintah saya adalah sebagai berikut.

ssh -i ./id_rsa -L 8080:127.0.0.1:8000 strapi@10.10.11.105

Pada gambar di atas, dapat kita lihat bahwa SSH telah berhasil dilakukan. Untuk mengetahui apakah Local Tunneling berhasil, kita bisa membuka beranda kita dan mengunjungi halaman 127.0.0.1:8080.

Jadi, ketika kita sedang mengakses 127.0.0.1:8080, SSH akan menangkap request kita dan meneruskan request tersebut ke 127.0.0.1:8000 pada remote server.

Referensi:

https://www.ssh.com/academy/ssh/tunneling/example

https://linuxize.com/post/how-to-setup-ssh-tunneling/

 

Arjuna Accha Dipa & Erik Hendrawan