Daftar isi
Begitu VPS menyala dengan IP publik, port 22 mulai didatangi bot yang mencoba ribuan kombinasi password. Panduan SSH key VPS ini mengganti login password dengan pasangan kunci, lalu menutup login password sama sekali. Di langkah terakhir ada jebakan yang membuat banyak tutorial gagal: setelah sshd_config diubah, server ternyata masih menerima password.
Diuji 5 November 2026 di Super Cloud Regular 1 vCPU · 2 GB, Ubuntu 24.04.5 LTS. Semua keluaran di bawah adalah hasil asli dari server uji.
Yang dibutuhkan
- VPS Linux dengan akses root. Cara login pertama kali dengan password ada di panduan Login ke VPS lewat SSH.
- Komputer dengan OpenSSH: Linux dan macOS sudah punya, Windows 10/11 juga sudah menyertakannya (perintah
sshdanssh-keygendi PowerShell). - Satu terminal yang tetap login ke VPS sampai semua langkah selesai. Ini cadangan kalau ada salah ketik.
1. Membuat SSH key di komputer Anda
Jalankan di komputer sendiri, bukan di VPS:
ssh-keygen -t ed25519 -C "laptop-kantor"
Tekan Enter untuk lokasi bawaan (~/.ssh/id_ed25519), lalu isi passphrase. Passphrase mengunci file kunci di laptop: kalau laptop hilang, kuncinya tidak langsung bisa dipakai orang lain.
Perintah ini menghasilkan dua file:
| File | Isi | Boleh dibagikan? |
|---|---|---|
id_ed25519 |
Kunci privat | Tidak pernah. Tetap di komputer Anda |
id_ed25519.pub |
Kunci publik | Ya, ini yang dipasang di VPS |
Kenapa ed25519 dan bukan RSA? Kuncinya pendek (satu baris sekitar 80 karakter), cepat, dan didukung semua versi OpenSSH yang masih dipakai. Kunci publik yang kami pasang di server uji tampak seperti ini:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIPfr9NBdqwH1EPPOFTLLvVM… laptop-kantor
2. Memasang SSH key di VPS
Dari Linux atau macOS
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@IP-VPS
Masukkan password root sekali lagi (terakhir kalinya). ssh-copy-id membuat folder ~/.ssh dengan izin yang benar dan menambahkan kunci ke ~/.ssh/authorized_keys. Di server uji hasilnya:
-rw------- 1 root root 98 authorized_keys
Dari Windows (PowerShell)
Windows tidak punya ssh-copy-id, jadi kirim isi kunci publik lewat ssh biasa:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@IP-VPS "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Uji login dengan kunci
Buka terminal baru (jangan tutup yang lama):
ssh root@IP-VPS
Kalau tidak ditanya password (atau hanya ditanya passphrase kunci), SSH key VPS sudah bekerja. Baru lanjut ke langkah berikutnya setelah ini berhasil.
3. Mematikan login password: jebakan file cloud-init
Tutorial umumnya menyuruh mengubah PasswordAuthentication no di /etc/ssh/sshd_config. Kami coba persis begitu di server uji, lalu memeriksa setelan yang benar-benar dipakai SSH dengan sshd -T:
sed -i "s/^#\?PasswordAuthentication.*/PasswordAuthentication no/" /etc/ssh/sshd_config
sshd -t && systemctl reload ssh
sshd -T | grep -E "^passwordauthentication "
passwordauthentication yes
Password masih aktif. Penyebabnya ada di baris ke-12 sshd_config:
Include /etc/ssh/sshd_config.d/*.conf
Image cloud Ubuntu menyertakan file /etc/ssh/sshd_config.d/50-cloud-init.conf yang isinya:
PasswordAuthentication yes
SSH memakai nilai pertama yang ditemukan untuk setiap setelan. Karena file di sshd_config.d/ dibaca lewat Include di bagian atas, nilai yes dari cloud-init menang atas no yang Anda tulis di bawahnya.
Cara yang benar
Buat file sendiri dengan nama yang terurut lebih dulu dari 50-cloud-init.conf:
cat > /etc/ssh/sshd_config.d/00-keamanan.conf <<'EOF'
PasswordAuthentication no
PermitRootLogin prohibit-password
EOF
sshd -t && systemctl reload ssh
sshd -T | grep -E "^(passwordauthentication|permitrootlogin) "
permitrootlogin without-password
passwordauthentication no
without-password adalah nama lama untuk prohibit-password: root tetap boleh login, tetapi hanya dengan kunci. sshd -t memeriksa salah ketik sebelum SSH dimuat ulang, jadi jangan dilewati.
4. Pastikan password benar-benar ditolak
Dari komputer Anda, paksa SSH memakai password saja:
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password root@IP-VPS
Hasil di server uji:
[email protected]: Permission denied (publickey).
Server bahkan tidak menawarkan kolom password lagi. Bot penebak password berhenti di sini.
Kalau terkunci di luar
Misalnya laptop hilang atau file kunci terhapus. Di Super Cloud, buka layanan VPS di client area lalu pakai Konsol web: layar VPS terbuka di browser walau SSH tidak bisa. Dari sana, tambahkan kunci baru ke /root/.ssh/authorized_keys. Tombol lain seperti restart dan install ulang ada di panduan Menyalakan, restart, dan install ulang VPS.
Agar tidak sampai ke situ, simpan cadangan kunci privat di tempat aman (misalnya password manager), atau pasang dua kunci dari dua perangkat.
Langkah berikutnya
SSH sudah aman, tapi port lain belum. Kalau VPS akan menjalankan aplikasi di Docker, baca Install Docker di Ubuntu 24.04, lalu Docker bypass UFW: hasil uji kami menunjukkan port container tetap terbuka ke internet walau firewall UFW aktif.
