Selekta BETA EN Unduh untuk Mac
SSH · CONNECTION · SECURITY

Konek ke database lewat SSH tunnel

Terbit 23 Oktober 2026

Untuk konek ke database lewat SSH tunnel, isi detail database sebagaimana dilihat dari bastion host, lalu di tab SSH centang Connect through an SSH tunnel dan isi SSH host, port 22, SSH user, serta private key atau password. Selekta membuka tunnel, meneruskan sebuah port lokal ke database, dan meminta Anda memverifikasi host key bastion pada koneksi pertama.

Anda tidak perlu menjalankan ssh -L di Terminal atau membiarkan jendela terbuka. Tunnel menempel pada koneksi: terbuka saat konek dan tertutup saat disconnect.

Cara kerja tunnel

Bastion (atau jump host) adalah server yang bisa Anda jangkau lewat SSH dan bisa menjangkau database di jaringan privat. Selekta login ke bastion, mendengarkan di port bebas pada 127.0.0.1 di Mac Anda, lalu meneruskan setiap koneksi database melalui sesi SSH ke host dan port database yang Anda isi di tab General.

Detail pentingnya: host database di-resolve oleh bastion, bukan oleh Mac Anda. Inilah yang menentukan isi Host:

Lokasi database Host di tab General
Di bastion itu sendiri, mendengarkan di localhost 127.0.0.1 atau localhost
Di mesin lain dalam jaringan privat IP privat atau nama internalnya, misalnya 10.0.3.17 atau db.internal
Database managed (RDS, Cloud SQL dan sejenisnya) di subnet privat Nama endpoint dari penyedia layanan

Jika Anda mengisi 127.0.0.1 padahal database ada di mesin lain, bastion akan mencoba konek ke dirinya sendiri dan tes gagal.

Langkah-langkah setup

  1. Tekan ⌘N dan pilih engine (PostgreSQL, MySQL / MariaDB atau SQL Server). File SQLite bersifat lokal, jadi tidak punya tab SSH.
  2. Di tab General, isi Host dan Port database sebagaimana dilihat dari bastion (lihat tabel di atas), plus Database, User dan Password untuk database.
  3. Tekan ⌘2 atau klik tab SSH, lalu centang Connect through an SSH tunnel.
  4. Isi SSH host (misalnya bastion.example.com), SSH port (22 sudah terisi) dan SSH user.
  5. Di Authentication, pilih Private key atau Password:
    • Private key: path default-nya ~/.ssh/id_ed25519. Pakai Browse untuk file lain. Key Ed25519, RSA dan PEM didukung. Jika key dilindungi passphrase, ketik di Key passphrase.
    • Password: ketik di SSH password. Keduanya disimpan di macOS Keychain.
  6. Biarkan Local port di auto agar Selekta memilih port bebas saat tunnel dibuka. Isi port tetap hanya jika ada program lain di Mac yang perlu memakai tunnel yang sama.
  7. Klik Test (⌘T). Selama berjalan, footer menampilkan "Opening tunnel to bastion.example.com".
  8. Pada koneksi pertama, dialog Verify SSH host key muncul. Periksa fingerprint (lihat bagian berikut) lalu klik Trust and connect.
  9. Setelah banner hijau "Connected to …" muncul, klik Save (⌘S).

Tab SSH dengan tunnel aktif, bastion host, user dan path private key

Key atau password

Autentikasi dengan key adalah pilihan yang lebih baik. Key tidak bisa ditebak, bisa dicabut per orang, dan kebanyakan bastion mematikan login password sama sekali. Jika belum punya key:

ssh-keygen -t ed25519 -C "[email protected]"
# lalu kirim ~/.ssh/id_ed25519.pub ke admin bastion, atau:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]

Pastikan dulu login berhasil di Terminal dengan ssh [email protected] sebelum membuat koneksi; masalah apa pun di sana juga akan muncul di Selekta.

Pakai autentikasi password hanya jika bastion memang disiapkan untuk itu, misalnya server sementara.

Konfirmasi host key

SSH melindungi Anda dari server palsu dengan memeriksa host key server. Pada koneksi pertama ke sebuah bastion, Selekta menampilkan Verify SSH host key berisi host, jenis key dan fingerprint: "First connection to this SSH host. Selekta has not seen its key before." Bandingkan fingerprint dengan yang dipublikasikan pemilik bastion, atau baca langsung di bastion:

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Trust and connect menyimpan key di ~/.ssh/known_hosts, file yang sama dengan yang dipakai ssh di Terminal. Jika sebelumnya Anda sudah pernah konek dengan ssh dari Terminal, key-nya sudah dikenal dan Anda tidak ditanya lagi.

Jika suatu saat key berubah, Selekta memblokir koneksi dengan SSH host key changed dan menampilkan fingerprint tersimpan dan fingerprint yang diterima berdampingan. Ini terjadi saat server diinstal ulang, tetapi juga persis seperti tampilan penyadapan. Tanyakan ke pemilik bastion fingerprint mana yang benar. Baru setelah itu pakai Remove stored key…; tes berikutnya akan meminta Anda memercayai key yang baru.

Kalau gagal

SSH authentication failed for [email protected]. Bastion menolak key atau password. Periksa SSH user, pastikan public key Anda ada di ~/.ssh/authorized_keys milik user itu di bastion, dan coba ssh -v [email protected] di Terminal untuk melihat key mana yang ditawarkan.

Cannot read SSH key ~/.ssh/id_rsa: … File key tidak ada, tidak bisa dibaca, atau dilindungi passphrase yang tidak diisi (atau salah). Perbaiki path-nya atau ketik passphrase di Key passphrase.

No answer from 10.0.3.17 after 10 s. Dengan tunnel aktif, ini biasanya berarti bastion-nya sendiri yang tidak menjawab tepat waktu, walaupun banner menyebut host database. Periksa SSH host dan port, apakah Anda perlu VPN kantor, dan apakah firewall bastion mengizinkan IP Anda. Connection refused (os error 61) berarti bastion terjangkau, tetapi tidak ada yang mendengarkan di port SSH tersebut.

Tunnel terbuka, lalu koneksi database langsung tertutup. Login SSH berhasil, tetapi bastion tidak bisa membuka channel ke database, sehingga driver database melaporkan koneksi yang tertutup atau di-reset. Ada dua penyebab umum. Pertama, Host di tab General salah: 127.0.0.1 berarti bastion itu sendiri, jadi pakai alamat privat database, dan pastikan database mendengarkan di interface tersebut. Kedua, bastion melarang port forwarding (AllowTcpForwarding no di sshd_config); minta administrator mengizinkannya untuk user Anda. Keduanya bisa dicek dari Terminal dengan ssh -N -L 15432:10.0.3.17:5432 [email protected] lalu konek ke localhost:15432.

Host key not trusted. Nothing was sent to bastion.example.com. Anda membatalkan dialog host key. Tes lagi setelah punya fingerprint pembanding.

macOS blocked Selekta from reaching 10.0.0.5 on your local network. Izinkan Selekta di System Settings › Privacy & Security › Local Network, lalu konek lagi.

Use either the SSH tunnel or the VPN, not both. Satu koneksi hanya bisa memakai salah satunya. Matikan yang lain.

Saat jaringan berganti atau Mac bangun dari sleep, sesi SSH bisa mati. Selekta membangun ulang tunnel di port lokal yang sama saat koneksi dipakai lagi, jadi tab yang terbuka tetap berfungsi.

Terkait