Akses VM Tanpa Buka Port SSH — Clientless Web Terminal Gateway
Setiap kali beli VPS baru, ada satu momen yang agak bikin waswas: port 22 langsung terbuka ke internet. Sejak detik pertama server hidup, bot-bot dari seluruh dunia udah mulai scan, brute-force, dan coba-coba login. Kalau gak percaya, cek aja journalctl -u sshd — pasti penuh dengan "Failed password" dari IP random.
Selama ini solusinya selalu: ganti port SSH, pasang fail2ban, atau matiin password auth pake SSH key. Tapi semua itu masih ngandelin port SSH yang tetap terbuka. Gimana kalau kita gak perlu buka port SSH sama sekali?
Ternyata provider-provider besar udah lama ngelakuin ini. Dan tekniknya bukan hal baru—namanya Clientless Web Terminal Gateway.
Apa itu Clientless Web Terminal?
Sederhananya: akses terminal server lewat browser, tanpa perlu SSH client. Kamu login ke web dashboard, klik "Console" atau "Browser Terminal", dan langsung dapet shell. Gak perlu buka Terminal.app, PuTTY, atau ssh command sama sekali.
Coba lihat provider besar:
- Hostinger — di hPanel VPS mereka ada tombol "Browser terminal" di pojok kanan atas halaman Overview. Sekali klik, langsung dapet shell.
- Vultr — "Vultr Console" di dashboard. Web-based, gak perlu SSH client.
- DigitalOcean — "Droplet Console" via browser. Bahkan bisa bypass SSH key setup sama sekali.
- Proxmox — noVNC console untuk manage VM. WebSocket proxy di belakang layar.
- Red Hat Virtualization — WebSocket proxy untuk console VM via noVNC/SPICE.
Semua pakai arsitektur yang sama.
Arsitektur di Balik Layar
Secara garis besar, begini cara kerjanya:
Browser → HTTPS → Web App (auth) → WebSocket → Gateway → PTY → Shell
- User login ke web dashboard — otentikasi via session, SSO, atau MFA.
- Web app spawn sebuah session — bikin koneksi WebSocket dari browser ke backend server.
- WebSocket Gateway — menerima koneksi dan menghubungkannya ke pseudo-terminal (PTY) di server.
- PTY (Pseudo-Terminal) — ini yang bikin shell session beneran jalan di server, persis kayak SSH.
- xterm.js — terminal emulator di browser yang render output secara real-time.
Jadi bukan simulasi atau emulasi—ini terminal beneran. Kamu bisa vim, tmux, htop, docker exec, semua jalan.
ssh command) yang handle koneksi langsung ke server:22. Kalau Web Terminal, browser cuma perlu HTTPS. Di belakang layar, WebSocket + PTY yang jembatani, port SSH (22) gak perlu terbuka ke publik.
Teknologi yang Dipakai
Ada beberapa pendekatan, dari yang paling sederhana sampai enterprise:
1. ttyd / WeTTY (sederhana)
ttyd adalah single binary yang serve terminal via Web. Dia spawn shell, serve lewat HTTP + WebSocket. Cocok buat one-off atau lab. WeTTY (Web + TTY) adalah versi Node.js-nya. Keduanya open source, pakai xterm.js di frontend.
2. node-pty + xterm.js + WebSocket (kustom)
Ini pendekatan yang lebih modular. node-pty (Node.js bindings untuk forkpty) spawn shell, xterm.js render di browser, dan WebSocket jadi jembatannya. Auth bisa di-handle terpisah via JWT atau one-time token. Ringan, fleksibel, cocok buat diintegrasikan ke web app yang udah ada.
3. Apache Guacamole (enterprise)
Apache Guacamole adalah clientless remote desktop gateway yang mature banget. Bukan cuma SSH—dia juga support RDP dan VNC lewat browser. Arsitekturnya: guacd (C daemon) yang translate protocol jadi Guacamole protocol, terus web application (Java/Tomcat) yang serve UI + auth. Digunakan di banyak perusahaan karena audit trail-nya lengkap dan bisa diintegrasikan dengan LDAP/SSO.
Kenapa Ini Penting?
Dengan arsitektur ini, beberapa masalah keamanan langsung ke solve:
- Port 22 bisa ditutup total — gak ada lagi scan, brute-force, atau CVE exploitation di SSH server.
- Auth terpusat — gak perlu manage SSH key distribusi. Cukup user punya akses ke web dashboard, dia bisa dapet terminal.
- Multi-factor authentication — karena lewat web, MFA (Google Authenticator, TOTP, dll) gampang ditambahin.
- Audit trail — semua session tercatat: siapa, kapan, command apa yang dijalankan. Bisa buat compliance.
- Akses dari mana aja — bahkan dari device yang gak punya SSH client (Chromebook, tablet, HP).
Apakah Ini Berarti SSH Sudah Mati?
Enggak juga. SSH tetep penting, terutama buat automation, script, rsync, git, tunnel, dan alat-alat yang emang butuh protokol SSH native. Tapi buat akses administrasi manual, Web Terminal Gateway adalah lapisan keamanan tambahan yang efektif.
Banyak organisasi sekarang pakai dual approach:
- SSH key-based auth buat automation dan CI/CD (via VPN atau private network).
- Web Terminal Gateway buat admin login manual dari browser (via HTTPS + MFA).
Port 22 tetap ada di server, tapi gak terbuka ke internet. Hanya bisa diakses dari internal network atau dari gateway yang udah terotentikasi.
Penutup
Teknik Clientless Web Terminal Gateway ini udah jadi standar de facto di industri cloud hosting dan VPS. Hostinger, Vultr, DigitalOcean, Proxmox—semua pakai varian yang sama. Bedanya cuma di tingkat kematangan dan fitur tambahan kayak audit trail, MFA, atau multi-protocol.
Kalau kamu manage server sendiri dan selama ini cuma andelin SSH key + ganti port, mungkin udah waktunya mikir buat nutup port 22 dari internet dan akses server lewat web gateway aja. Gak cuma lebih aman, tapi juga lebih gampang di-manage—terutama kalau timnya udah lebih dari satu orang.
Aku sendiri udah nerapin ini dan puas banget. Gak ada lagi notifikasi fail2ban tiap pagi.