SSH Tunneling atau biasa disebut SSH port forwarding merupakan mekanisme di SSH untuk melakukan tunneling port aplikasi dari mesin lokal ke server remote, atau sebaliknya. Ini dapat digunakan untuk menambahkan enkripsi ke aplikasi atau untuk mengakses service tertentu secara private dan aman.
Dalam SSH tunneling, ada dua jenis forwarding yang umum digunakan yaitu remote forwarding dan local forwarding.
- Remote Forwarding: Misalnya, Anda dapat menggunakan remote forwarding untuk mengakses layanan web (misalnya, web server Apache) yang berjalan di komputer lokal Anda melalui SSH ke server jauh. Ini akan membuat layanan web lokal Anda tersedia di server jauh.
- Local Forwarding: Sebaliknya, Anda dapat menggunakan local forwarding untuk mengakses layanan database yang berjalan di server jauh dari aplikasi Anda yang berjalan di komputer lokal Anda. Dengan local forwarding, Anda membuat port lokal Anda tersedia di server jauh
Local Forwarding #
Untuk mengakses layanan internal di server jauh gunakan perintah.
ssh [email protected] -L 5432:localhost:5432 -N -v
5432
: Port yang akan dibuat di mesin lokallocalhost:5432
: Port di server remote yang ingin diakses
Perintah tersebut akan membuat tunnel ke port PostgreSQL (5432) agar dapat diakses dengan IP localhost di mesin lokal.
psql -h 127.0.0.1 -U username -d application_db
Anda juga bisa melakukan forward Soket Unix dengan perintah.
ssh -L /tmp/local.sock:/var/run/remote.sock [email protected]
/tmp/local.sock
: Soket yang akan dibuat di mesin lokal./var/run/remote.sock
: Soket di server remote yang ingin diakses.
Remote Forwarding #
Untuk menggunakan remote forwarding agar layanan internal di mesin lokal dapat tersedia di server jauh gunakan perintah.
ssh [email protected] -R 5432:localhost:5432 -N -v
Selanjutnya cek apakah port PostgreSQL (5432) berhasil listen di server jauh.
# netstat -plntu | grep -i 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3933/sshd: root
tcp6 0 0 ::1:5432 :::* LISTEN 3933/sshd: root
Atau Anda dapat mengetesnya langsung menggunakan psql
psql -h 127.0.0.1 -U username -d application_db