Push File dari Server ke Client dengan teknik reverse SSH tunnel

By | April 18, 2025
170 Views

Push File dari Server ke Client dengan teknik reverse SSH tunnel – Biasanya proses upload / push file dimulai dari sisi client ke server, hal itu memungkinkan karena server yang mempunyai IP public! Nah kalau client kan tidak punya, kecuali kalau punya fitur port forwarding.

Bisanya fitur port forwarding pada modem itu jarang sekali ada, sehingga kalian bisa menggunakan solusi seperti ngrok Membuat Service Tunneling di NGROKMembuat Service AutoSSH untuk tunneling. Ngrok untuk versi gratis mempunyai batasan port yang digunakan serta bandwidth harian. Oleh sebab itu saya lebih suka menggunakan tunneling via VPS.

Anggap saja, kalian sudah mempunyai VPS dengan IP Public serta sudah diatur sshd nya untuk menerima tunneling. Remote PC dengan SSH Reverse Port Forward dan Tunneling Melalui via VPS.

Tunneling

Untuk Push File dari Server ke Client dengan teknik reverse SSH tunnel kalian harus aktifkan ssh tunneling terlebih dahulu, saya sarankan menggunakan autossh Membuat Service AutoSSH untuk tunneling

Dalam lingkungan di mana client berada di balik NAT atau firewall, seringkali sulit untuk “push” atau “pull” file langsung antara server dan client. Solusinya adalah dengan membuat reverse SSH tunnel dari client ke server, lalu memanfaatkan tunnel tersebut untuk transfer file menggunakan rsync atau scp

Di client, buka tunnel ke server

Misalkan kita mempunyai komputer dengan nama paijo, yang akan melakukan tunneling ke server bejo@104.128.130.171. Agar selalu terhubung ke server, maka paijo menggunakan tunneling dengan membuka port nya di 8082

autossh -M 0 -N -R 8082:localhost:22 bejo@104.128.130.171

Untuk mengendalikan komputer paijo, maka kita bisa masuk terlebih dahulu ke server dan mengetikan perintah berikut

ssh -p 8082 paijo@localhost

Di server, jalankan rsync via tunnel

Setelah perintah diatas berjalan dengan baik, artinya server bisa menghubungi client paijo via tunnel ke server. Maka kita bisa Push File dari Server ke Client dengan teknik reverse SSH tunnel juga menggunakan rsync Rsync Untuk Sinkronisasi berbasis CLIUpload dan download file ke server via Protokol SSH

See also  jupyterlab bisa dibobol menggunakan teknik bruteforce?

perintahnya yaitub ketika sudah masuk ke sever gunakan perintah berikut

rsync -avz -e "ssh -p 8082 -o StrictHostKeyChecking=no" "home/bejo/nitip/server.py"  "paijo@localhost:/home/paijo/nitip/"

Bagaimana Alurnya Data nya?

Karena kita jarang langsung duduk manis akses server. Tapi biasanya kita akan akses server dari PC lain

Misalkan

  • Kamu berada di PC A (Client A)

  • Kamu SSH ke server dari Client A

  • Kemudian dari dalam server, kamu ingin mengakses Client B

Alur Pertama (Client B melakukan tunneling dulu ke Server )

ssh -N -R 2222:localhost:22 user@203.0.113.10

Ini artinya:

  • Client B membuka reverse tunnel ke server

  • Server port 2222 → ke Client B

Alur Kedua (Kamu Login dari PC A ke Server):

ssh user@203.0.113.10

sekarang posisi kamu ada di server

Alur ketiga Server ke Client B

setelah masuk di sisi server, maka ketikan perintah berikut

ssh client_user@localhost -p 2222

Jalur data untuk SSH ini:

Server (203.0.113.10) ──────▶ Client B (tunnel via koneksi yang dibuat Client B)

Jadi… apakah data lewat PC A?

Jawabannya: Tidak!
Koneksi SSH dan transfer data tidak melewati PC A karena:

  • PC A hanya digunakan untuk login ke server, bukan sebagai relay

  • Semua transfer data terjadi langsung antara Server dan Client B melalui koneksi yang Client B buat ke Server

Kalau kamu ingin PC A dilibatkan sebagai relay/penerus koneksi, itu baru beda cerita—itu butuh konfigurasi ProxyJump atau -J di SSH. Tapi untuk kasus kamu, PC A tidak ikut dalam jalur transfer file reverse SSH.

Apakah bisa push file dari client A ke client B menggunakan server sebagai penghubung nya?

Apakah bisa push file dari client A ke client B menggunakan server sebagai penghubung nya?

Transfer File dari Client A → Client B via Server

Asumsi:

  • Client A dan Client B tidak bisa akses langsung satu sama lain

  • Keduanya bisa akses server publik: 203.0.113.10

  • Kamu ingin kirim file dari A ke B

See also  Proxy Jump untuk Remote Komputer

Caranya menggunakan jumpt host. Gunakan rsync langsung dari Client A via SSH + ProxyCommand (Jump Host)

rsync -avz -e "ssh -o ProxyCommand='ssh sever@203.0.113.10 -W localhost:2222'" /path/file user_B@localhost:/tujuan/

tapi ingat ya, client B tetap harus reverse tunnel ke server!

ssh -N -R 2222:localhost:22 user@203.0.113.10

atau kalau mau agak ribet, bisa menggunakan

  • File di Client A, ingin langsung ke Client B
    • Opsi 1: rsync + ProxyCommand via Server
  • File di Client A, bisa transit dulu ke Server
    • Upload dulu, baru push dari Server