[Termux] Reverse SSH Tunneling

Pada postingan kali ini, akan dibahas bagaimana cara melakukan reverse SSH tunneling, dimana kita melakukan expose local server kita melalui perantara server lain.
Case ini biasa dilakukan apabila local server kita tidak dapat diakses dari luar (misalnya komputer dikantor, komputer dirumah, dll), namun dalam waktu tertentu, kita perlu mengaksesnya dari luar jaringan kantor tersebut.
Untuk melakukan reverse ssh tunneling ini maka perlu disiapkan beberapa hal :
1. Server yang akan dijadikan perantara (remote server)
2. Server yang akan diakses dari luar (local server)
3. Local server dapat mengakses remote server

Untuk percobaan dalam artikel ini, admin menggunakan dua buah smartphone yang telah terinstall termux sebagai local dan remote server.

Berikut tahap-tahap untuk melakukan reverse ssh tunneling :
A. Remote Server :
  1. Pertama, install openssh server  dengan perintah pkg install openssh
  2. Setelah itu jalankan daemon ssh server dengan perintah sshd
  3. Cek apakah sshd telah berjalan dengan perintah ps aux | grep sshd
  4. Cek apakah sshd telah berhasil membinding port dengan perintah netstat -ntlp | grep sshd. By default sshd di termux akan melisten port 8022.
  5. Cek user yang yang digunakan di termux remote server dengan perintah id. Perintah tersebut akan menampilkan output seperti
    uid=10208(u0_a208) gid=10208(............)
    Nama user yang digunakan adalah text yang admin bold, yaitu u0_a208. Simpan dan ingat username tersebut karena akan digunakan sebagai user untuk meremote server.
  6. Selanjutnya atur password user yang tadi dicatat dengan perintah passwd. kemudian di prompt yang muncul, masukkan password dan confirmation passwordnya.
B. Local Server :
  1. Install ssh client dengan perintah pkg install openssh
  2. Akses remote server menggunakan ssh dengan perintah ssh -R <port yang akan dibinding remote server>:<local server IP/localhost>:<local server port yang akan dishare> user@remote_server_IP -p <port_ssh_remote_server>.
    Asumsikan bahwa kita akan mengexpose nginx yang ada di local server (port 8080) ke remote server dengan port 8088, IP remote server 192.168.43.1 dan port ssh remote server adalah 8022 dengan user u0_a208.
    Maka jalankan nginx dengan perintah nginx (apabila nginx belum berjalan, skip langkah ini apabila nginx sudah berjalan).Kemudian lakukan remote tunneling dengan perintah ssh -R 8088:localhost:8080 u0_a208@192.168.43.1 -p 8022
    PASTIKAN PORT 8088 tidak digunakan di remote server!
C. Pembuktian
  1. Buka web browser di remote server dan ketikkan localhost:8088 di addressbar. maka akan muncul halaman web yang berjalan di local server.

D. Bonus

Agar web local server yang telah diexpose di remote server dapat diakses melalui web browser di perangkat lain, maka perlu mengaktifkan TCP Forwarding dan Port Forwarding di ssh servernya. Caranya :
  1. Di remote server buka konfigurasi openssh server dengan perintah nano /data/data/com.termux/files/usr/etc/ssh/sshd_config
  2. Tambahkan dua baris konfigurasi berikut di baris paling bawah :
    GatewayPorts yes
    AllowTcpForwarding yes
  3. Kemudian simpan dengan menekan ctrl+x dan tekan y, lalu enter.
  4. Restart sshd dengan perintah pkill sshd && sshd
  5. Lakukan kembali setiap tahapan yang ada di point B
  6. Siapkan 1 smartphone lagi dan pastikan smartphone tersebut terhubung ke satu jaringan yang sama dengan remote server
  7. Buka web browser di smartphone tersebut
  8. Masukkan IP remote server beserta portnya di address bar (dalam case ini adalah 192.168.43.1:8088) dan tekan enter. Maka halaman web yang ada di local server akan terbuka di smartphone tersebut.

Komentar

Postingan populer dari blog ini

Bagian-Bagian Motherboard(Mainboard) dan Fungsinya

[Termux] Nginx sebagai Load Balancer dan Web Server

[Termux] Install NGINX dan PHP-FPM