
Mengakses Server SSH Melalui Cloudflare Tunnel dengan Port Forwarding PostgreSQL
Dalam banyak arsitektur infrastruktur modern, administrator tidak lagi membuka port SSH langsung ke internet. Salah satu pendekatan yang semakin populer adalah menggunakan Cloudflare Tunnel (cloudflared) untuk mengakses server secara aman tanpa membuka port publik.
Konfigurasi SSH
Berikut contoh konfigurasi yang dapat ditambahkan pada file:
~/.ssh/config
Host my-db
HostName db.example.com
User ubuntu
ProxyCommand cloudflared access ssh --hostname %h
LocalForward 5432 127.0.0.1:5432
Konfigurasi ini memungkinkan kita mengakses server melalui Cloudflare Tunnel dan secara bersamaan membuat tunnel lokal ke PostgreSQL yang berjalan di server.
Penjelasan Setiap Parameter
Host
Host my-db
Ini adalah alias koneksi SSH. Setelah konfigurasi dibuat, kita tidak perlu lagi menuliskan hostname panjang. Cukup menjalankan:
ssh my-db
SSH akan otomatis menggunakan konfigurasi yang telah didefinisikan.
HostName
HostName db.example.com
Merupakan hostname server tujuan yang terhubung dengan Cloudflare Tunnel.
Hostname ini biasanya sudah dikonfigurasi di Cloudflare Zero Trust untuk akses SSH.
User
User ubuntu
User Linux yang digunakan untuk login ke server.
Contoh umum:
ubuntu
ec2-user
root
deploy
ProxyCommand
ProxyCommand cloudflared access ssh --hostname %h
Parameter ini mengganti metode koneksi SSH standar dengan Cloudflare Access SSH.
Penjelasannya:
cloudflared access sshmenjalankan koneksi SSH melalui Cloudflare Tunnel%hakan diganti otomatis dengan nilai dariHostName
Ketika kita menjalankan:
ssh my-db
SSH sebenarnya menjalankan perintah internal seperti berikut:
cloudflared access ssh --hostname db.example.com
Dengan cara ini:
server tidak perlu membuka port 22
koneksi SSH melewati jaringan Cloudflare Zero Trust
keamanan meningkat karena dilindungi Access policy
LocalForward
LocalForward 5432 127.0.0.1:5432
Parameter ini membuat SSH Local Port Forwarding.
Artinya:
Local Machine:5432 → Remote Server:127.0.0.1:5432
Jika server menjalankan PostgreSQL pada:
127.0.0.1:5432
Maka setelah SSH aktif, database dapat diakses dari komputer lokal melalui:
localhost:5432
Contoh koneksi menggunakan PostgreSQL client:
psql -h localhost -p 5432 -U postgres
Atau melalui aplikasi seperti:
DBeaver
TablePlus
DataGrip
pgAdmin
Semua aplikasi tersebut cukup diarahkan ke:
Host: localhost
Port: 5432
Padahal sebenarnya koneksi diteruskan ke database di server.
Cara Menggunakan
Setelah konfigurasi disimpan, jalankan:
ssh my-db
SSH akan:
Membuat koneksi melalui Cloudflare Tunnel
Login ke server menggunakan user
ubuntuMembuka tunnel PostgreSQL
Selama koneksi SSH aktif, database dapat diakses dari:
localhost:5432
Keuntungan Pendekatan Ini
Menggunakan Cloudflare Access + SSH Tunnel memberikan beberapa keuntungan:
1. Tidak perlu membuka port SSH publik
Server tidak perlu membuka port 22 ke internet.
2. Perlindungan Zero Trust
Akses dapat dibatasi menggunakan:
email login
identity provider
device posture
IP restriction
3. Database tetap private
PostgreSQL tetap berjalan di:
127.0.0.1
Sehingga tidak bisa diakses langsung dari internet.
4. Aman untuk Production
Metode ini sering digunakan pada arsitektur modern seperti:
Docker server
Kubernetes node
private VPS
internal database server
Kesimpulan
Dengan kombinasi Cloudflare Tunnel dan SSH Local Forwarding, administrator dapat mengakses server dan database secara aman tanpa membuka port publik.
Konfigurasi sederhana berikut sudah cukup untuk membuat koneksi yang aman dan efisien:
Host my-db
HostName db.example.com
User ubuntu
ProxyCommand cloudflared access ssh --hostname %h
LocalForward 5432 127.0.0.1:5432
Cukup jalankan:
ssh my-db
dan database PostgreSQL di server akan tersedia di:
localhost:5432
Pendekatan ini sangat cocok digunakan untuk akses database production yang aman melalui Cloudflare Zero Trust.