Mengenal SSH, Public Key & Private Key untuk Otomatisasi Update Website
Apa itu SSH, public key dan private key, dan bagaimana pasangan kunci ini mengamankan server sekaligus memungkinkan update website ke cloud berjalan otomatis tanpa password.
Setiap kali Anda meng-update sebuah website yang berjalan di cloud atau server sewaan, di belakang layar hampir selalu ada satu teknologi yang bekerja: SSH. SSH-lah yang membuat seorang developer di Indonesia bisa mengendalikan server di belahan dunia lain dengan aman — dan yang lebih penting, membuat proses update bisa berjalan otomatis tanpa mengetik password sama sekali. Mari kita kupas dari dasar.
Apa itu SSH?
SSH (Secure Shell) adalah protokol untuk terhubung dan mengendalikan komputer lain dari jarak jauh secara terenkripsi. Bayangkan Anda membuka “terminal” komputer server yang ada di data center, padahal Anda sedang duduk di rumah. Semua perintah yang Anda ketik dan semua data yang dikirim dienkripsi, sehingga tidak bisa disadap di tengah jalan.
Sebelum SSH ada, orang memakai protokol seperti Telnet yang mengirim data — termasuk password — dalam bentuk teks polos. Siapa pun di jaringan bisa membacanya. SSH lahir untuk menutup celah itu.
Contoh perintah paling umum:
ssh user@202.74.74.73
Perintah di atas berarti: “hubungkan saya sebagai user ke server beralamat 202.74.74.73”. Setelah masuk, Anda bisa menjalankan perintah apa pun di server itu seolah-olah duduk di depannya.
Masalah dengan password
Cara paling sederhana untuk membuktikan “saya berhak masuk” adalah dengan password. Tapi password punya kelemahan serius untuk server:
- Bisa ditebak lewat serangan brute-force (mencoba jutaan kombinasi).
- Bisa bocor jika Anda mengetiknya di tempat yang salah atau menyimpannya sembarangan.
- Merepotkan untuk otomatisasi — sebuah skrip yang jalan otomatis tidak bisa “mengetik” password dengan aman.
Solusinya adalah pendekatan yang jauh lebih kuat: kriptografi kunci publik (public-key cryptography), inti dari public key dan private key.
Public key & private key: analogi gembok dan kunci
Bayangkan Anda punya sepasang benda yang dibuat berpasangan dan saling cocok:
- 🔓 Public key (kunci publik) = sebuah gembok. Boleh Anda bagikan ke siapa saja. Anda pasang gembok ini di server.
- 🔑 Private key (kunci privat) = anak kunci satu-satunya yang bisa membuka gembok itu. Ini rahasia, hanya Anda yang memilikinya, dan tidak pernah dikirim ke mana pun.
Cara kerjanya saat login:
- Private key disimpan aman di komputer Anda (misalnya di
~/.ssh/id_ed25519). - Public key Anda salin ke server (ke file
~/.ssh/authorized_keys). - Saat Anda menyambung, server “menantang” Anda dengan teka-teki yang hanya bisa dijawab benar oleh pemegang private key yang cocok.
- Komputer Anda menjawab tantangan itu memakai private key — tanpa pernah mengirim private key-nya. Server memverifikasi memakai public key. Cocok → masuk.
Yang krусial: private key tidak pernah meninggalkan komputer Anda. Bahkan jika seseorang menyadap seluruh komunikasi, mereka tidak bisa menyusun ulang private key Anda. Inilah kenapa metode ini jauh lebih aman daripada password.
Membuat dan memasang pasangan kunci
Membuat pasangan kunci hanya butuh satu perintah:
ssh-keygen -t ed25519 -C "email-anda@contoh.com"
Ini menghasilkan dua file:
id_ed25519→ private key (RAHASIA, jangan pernah dibagikan).id_ed25519.pub→ public key (boleh disebar).
Lalu salin public key ke server:
ssh-copy-id user@202.74.74.73
Sejak saat itu, Anda bisa login tanpa password — cukup ssh user@202.74.74.73 dan langsung masuk, karena private key Anda otomatis membuktikan identitas.
⚠️ Jaga private key seperti menjaga kunci brankas. Jika bocor, orang lain bisa masuk ke server Anda. Lindungi dengan passphrase agar aman walau file-nya tercuri.
Inti masalah: bagaimana ini mengotomatiskan update website
Di sinilah keindahannya muncul. Karena login dengan kunci tidak butuh interaksi manusia (tidak perlu mengetik password), seluruh proses update website bisa dijalankan oleh skrip otomatis.
Alur khas update sebuah website ke cloud:
# Dijalankan dari komputer developer, otomatis & tanpa password:
ssh user@server "cd /var/www/website && git pull && npm run build"
Satu baris di atas: menyambung ke server, menarik kode terbaru, lalu membangun ulang situs — semuanya dipicu oleh satu perintah. Karena memakai kunci, tidak ada prompt password yang menghentikan prosesnya.
Pola yang sama dipakai di mana-mana:
- Deploy script (
deploy.ps1/deploy.sh) yang menyalin file hasil build ke server lewatscpataursync. - CI/CD seperti GitHub Actions: server CI menyimpan private key sebagai secret, lalu memakai SSH untuk men-deploy otomatis setiap kali Anda
git push. - Cron job terjadwal yang menyinkronkan data antar-server malam hari.
Tanpa public/private key, semua otomatisasi ini mustahil — karena tidak ada manusia yang siap mengetik password jam 3 pagi saat skrip dijalankan.
Praktik aman yang wajib
- Gunakan kunci, matikan login password di server (
PasswordAuthentication no) agar serangan brute-force percuma. - Lindungi private key dengan passphrase.
- Satu kunci per perangkat/keperluan — gampang dicabut salah satunya bila bocor tanpa mengganggu yang lain.
- Batasi hak akun yang dipakai untuk deploy (jangan selalu
root). - Padukan dengan firewall (UFW) dan fail2ban untuk lapisan pertahanan tambahan.
Ringkasan
🔐 SSH = jalur terenkripsi mengendalikan server jarak jauh · 🔓 Public key = gembok yang dipasang di server (boleh disebar) · 🔑 Private key = anak kunci rahasia yang tak pernah dikirim · 🤖 Karena login tanpa password, update website bisa 100% otomatis lewat skrip, CI/CD, atau cron.
SSH dengan pasangan kunci adalah fondasi sunyi yang membuat dunia cloud modern berjalan: aman bagi manusia, sekaligus mulus bagi mesin.
Aplikasi Elang dijalankan self-hosted di server Anda sendiri dan diperbarui dengan pola aman seperti ini. Pelajari kenapa fondasinya kuat di kenapa server Linux sangat handal, atau lihat produk Elang.