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/