Kalau kamu masih login SSH ke VPS pakai password biasa (bukan SSH key), itu salah satu celah keamanan paling gampang dieksploitasi lewat brute force. Bot-bot di internet itu nyoba nebak password SSH server orang 24 jam nonstop, dan kalau password kamu lemah atau ketebak, server bisa kebobolan.
SSH key itu sepasang file: private key (disimpan di komputer kamu, jangan pernah dibagiin ke siapapun) dan public key (ditaruh di server). Bedanya sama password, kombinasi karakter di SSH key itu jauh lebih panjang dan kompleks daripada password biasa, jadi praktis mustahil ditebak lewat brute force. Tanpa private key yang cocok, gak ada cara buat login sama sekali, beda sama password yang masih bisa dicoba tebak terus-terusan.
Yang kamu butuhin cuma akses SSH ke VPS (masih pakai password lama, buat sementara), terminal di komputer lokal, dan akses sudo di VPS. Kalau semua udah siap, langsung aja mulai dari langkah pertama.
1. Generate SSH Key di Komputer Lokal
Buka terminal di komputer kamu (bukan di VPS), lalu jalanin command di bawah ini. Proses generate key ini cuma butuh beberapa detik dan sepenuhnya offline, gak perlu koneksi internet sama sekali karena semua perhitungan kriptografinya jalan lokal di komputer kamu.
ssh-keygen -t ed25519 -C "email-kamu@contoh.com"
Kita pakai algoritma ed25519 (baca selengkapnya di catatan rilis resmi OpenSSH soal Ed25519) karena lebih modern dan lebih cepat dibanding RSA, tapi tetap sangat aman. Kalau muncul pertanyaan lokasi file, tekan Enter aja buat pakai lokasi default. Kamu juga bakal ditanya mau kasih passphrase atau enggak, ini opsional tapi disaranin diisi buat lapisan keamanan tambahan (kayak PIN buat private key kamu).
Setelah selesai, kamu bakal punya 2 file: id_ed25519 (private key, JANGAN dibagiin ke siapapun) dan id_ed25519.pub (public key, ini yang bakal dikirim ke server).
2. Kirim Public Key ke VPS
Cara paling gampang, pakai command ssh-copy-id. Tool ini otomatis nangani proses copy dan setting permission yang benar di sisi server, jadi kamu gak perlu manual bikin folder .ssh atau atur permission-nya satu-satu.
ssh-copy-id user@ip-vps-kamu
Kamu bakal diminta masukin password VPS (yang lama), terus public key otomatis kekirim dan kesimpen di file ~/.ssh/authorized_keys di server.
Kalau ssh-copy-id gak tersedia (biasanya di Windows tanpa WSL), kamu bisa copy manual:
cat ~/.ssh/id_ed25519.pub | ssh user@ip-vps-kamu "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. Test Login Pakai SSH Key
Penting: jangan tutup sesi SSH yang lagi aktif dulu. Buka terminal baru, terus coba login lewat jendela terpisah. Kalau ternyata ada yang salah di setup, kamu masih punya sesi lama yang aktif buat benerin config-nya, tanpa risiko ke-lock out total dari server.
ssh user@ip-vps-kamu
Kalau setup-nya bener, kamu bakal langsung masuk tanpa diminta password (atau cuma diminta passphrase kalau kamu set tadi). Kalau masih diminta password VPS, berarti ada yang salah di step sebelumnya, cek lagi sebelum lanjut ke step berikutnya.
4. Matikan Login Pakai Password
Setelah yakin SSH key beneran jalan, baru kita matiin opsi login password. Edit file config SSH:
sudo nano /etc/ssh/sshd_config
Cari baris berikut (kalau ada tanda # di depan, hapus tanda itu), lalu ubah jadi:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
Simpan file (CTRL+X, lalu Y, lalu Enter), terus restart service SSH-nya:
sudo systemctl restart ssh
5. Verifikasi Sebelum Nutup Sesi Lama
Ini langkah yang sering dilewatin dan berakibat fatal: jangan tutup sesi SSH lama sebelum bener-bener yakin. Buka terminal baru (yang ketiga), coba login lagi pakai SSH key:
ssh user@ip-vps-kamu
Kalau berhasil login, baru aman buat nutup sesi-sesi lama. Kalau gagal, kamu masih punya sesi lama yang aktif buat benerin config-nya lagi, tanpa risiko ke-lock out total dari server sendiri.
Males Ngetik Passphrase Terus? Pakai ssh-agent
Kalau kamu set passphrase tadi dan males ngetik ulang tiap kali SSH, pakai ssh-agent buat nyimpen key-nya sementara di memori:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Setelah itu kamu cuma perlu masukin passphrase sekali per sesi terminal, bukan tiap kali SSH ke server. Lumayan berguna kalau kamu sering bolak-balik SSH ke banyak server dalam sehari.
Beberapa hal yang mungkin kamu temuin di tengah jalan: kalau muncul “Permission denied (publickey)” pas mau login, biasanya karena permission folder .ssh atau file authorized_keys di server kebuka terlalu lebar, fix dengan chmod 700 ~/.ssh dan chmod 600 ~/.ssh/authorized_keys. Kalau SSH key ke-detect tapi tetap diminta password, cek lagi apakah baris PubkeyAuthentication yes beneran ada dan gak ke-comment di sshd_config, terus restart service SSH lagi. Dan kalau lupa passphrase, sayangnya gak ada cara recover, solusinya generate ulang key pair baru dan ulangi proses kirim public key ke server.
Kalau Sampai Ke-Lock Out Total dari Server
Ini skenario paling bikin panik, tapi biasanya masih bisa diselamatin. Kalau ini kejadian, cek dulu apakah provider VPS kamu punya fitur Console/VNC dari dashboard mereka (kebanyakan provider besar punya), masuk dari situ, terus benerin sshd_config dari akses konsol itu, bukan lewat SSH.
Penutup
Nah, segitu aja cara setup SSH key login dan matiin akses password di VPS Ubuntu. Kombinasi ini termasuk salah satu langkah keamanan paling fundamental yang sering dilewatin pemula, padahal simpel dan langsung ngurangin risiko brute force secara signifikan. Kalau kamu udah pakai CrowdSec juga, SSH key ini jadi lapisan pertahanan tambahan yang saling melengkapi, bukan gantiin satu sama lain.
Kalau ada yang error atau nyangkut, drop komentar aja bro.
























