SSH Tunneling atau biasa disebut SSH port forwarding merupakan mekanisme di SSH untuk melakukan tunneling port aplikasi dari mesin klien ke mesin server, 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 username@srv11.example.com -L 5432:localhost:5432 -N -v
Perintah tersebut akan membuat tunnel ke port PostgreSQL (5432) agar dapat diakses dengan IP localhost di mesin client.
psql -h 127.0.0.1 -U username -d application_db
Remote Forwarding #
Untuk menggunakan remote forwarding agar layanan internal di mesin lokal dapat tersedia di server jauh gunakan perintah.
ssh username@srv11.example.com -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